开心123 发表于 2017-4-28 08:19:18

Python 迭代器 iteraor

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
 
 
页: [1]
查看完整版本: Python 迭代器 iteraor