可以直接作用于for循环的对象统称为可迭代对象:Iterable。
一类是集合数据类型,如list、tuple、dict、set、str等;
一类是generator,包括生成器和带yield的generator function。
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。
list、dict、str虽然是Iterable,却不是Iterator
小结
1、凡是可作用于for循环的对象都是Iterable类型;
2、凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
3、集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
test_list [,,,,] test_dirt { :, :, : } test_tuple (,,,,) test_set {,,,,} i test_list: (i) i test_dirt: (i) i test_tuple: (i) i,j test_set.(): ( (i,j))
(): i (): i iter_obj make_iter() i iter_obj: (i) () i iter_obj: (i)