Python/迭代器

维基教科书,自由的教学读本

迭代器是一个可以记住遍历的位置的对象。迭代器对象从序列的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。字符串,列表或元组对象等序列数据结构都可用于创建迭代器。

iter() 和 next()[编辑]

迭代器有两个基本方法:iter() 和 next()。

list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象
print (next(it))   # 输出迭代器的下一个元素

判断一个对象是否可迭代[编辑]

>>> from collections import Iterable
>>> isinstance(myObj,Iterable) #myObj是否可迭代

编写自己的可迭代对象[编辑]

编写自己的可迭代对象(Collections::Iterable),有两种规格。

第一种规格要求类实现特殊函数__getitem__;如果迭代完成,应raise IndexError

第二种规格要求实现一个特殊函数__iter__,该函数应该返回一个iterator对象(通常独立设置自己的迭代index)。iterator对象是一个带状态的对象,调用next()方法的时候返回容器中的下一个值。iterator对象必须实现特殊函数 __next__。所以一般的做法就是在类中同时实现__iter__和__next__,然后在__iter__中返回自己。__next__函数要求依次返回需要迭代的项目,结束后raise StopIteration