迭代器就是按照某种特定顺序来遍历某个集合的所有元素;
生成器就是每次调用时生成一个元素,可以通过循环调用来实现遍历所有元素的目的。
如何判断某个对象是否可迭代呢?答案是可以使用collections.Iterable类来判断。如下面的代码所示,列表是可迭代的,整数是不可迭代的,字符串是可迭代的。
from collectionsimport Iterable
print(isinstance([],Iterable))#列表可迭代的,输出结果是True
print(isinstance(12,Iterable))#整数是不可迭代的,输出结果是Fals
print(isinstance(“12”,Iterable))#字符串是可迭代的,输出结果是True
迭代器(Iterator)
它可以作为内置函数next()的参数,每次按照一定顺序得到其中一个元素。但比较有趣的是,列表不是迭代器。同样可以用collections.Iterator类来判断某个对象是否是迭代器。如下面的代码所示,列表和字符串都不是迭代器。
from collectionsimport Iterator
print(isinstance([],Iterator))#列表不是迭代器,输出结果是False
print(isinstance(“abc”,Iterator))#字符串也不是迭代器,输出结果是False
列表可以使用另外一个内置函数iter()来将其转换成Iterator(迭代器)。
迭代器的一个特点是它只能使用一次,从头部走到尾部。如果希望再次走一遍,只能创建一个新的迭代器。