Python迭代器 iterator
--by GhostFromHeaven
迭代器是一个实现迭代器协议的容器对象,它基于两个方法:
next 返回容器的下一个元素;
__iter__ 返回迭代器本身。
迭代器可以通过内置函数iter和一个序列作为参数创建,如下:
>>> i = iter('iter')
>>> i.next()
'i'
>>> i.next()
't'
>>> i.next()
'e'
>>> i.next()
'r'
>>> i.next()
Traceback (most recent call last):
File "<console>", line 1, in <module>
StopIteration
序列遍历完后,继续调用next()就会抛出StopIteration异常。
要创建自己的迭代器,可以实现迭代器协议,即实现next方法和__iter__特殊方法。
>>> class MyIterator(object):
... def __init__(self, step):
... self.step = step
... def next(self):
... """Returns the next element."""
... if self.step == 0:
... raise StopIteration
... self.step -= 1
... return self.step
... def __iter__(self):
... """Returns the iterator itself."""
... return self
...
>>> for el in MyIterator(4):
... print el
...
3
2
1
0