迭代器

迭代器只不过是一个实现迭代器协议的容器对象。它基于两个方法:
   (1) next  返回容器的下一个项目
   (2) __iter__ 返回迭代器本身

迭代器可以通过使用一个iter内建函数和一个序列来创建:
>>> i = iter('abc')
>>> i.next()
'a'
>>> i.next()
'b'
>>> i.next()
'c'
>>> i.next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>>


当序列遍历完时,将抛出一个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 e1 in MyIterator(4):
...     print e1
...
3
2
1
0

你可能感兴趣的:(迭代器)