概念:实现迭代器协议的容器对象。它基于以下两个方法:
- next :返回容器的下一个元素
- iter :返回迭代器本身
创建方法:
1.利用内置函数iter()创建
iter()函数包裹一个可迭代的序列即可成为迭代器。
In [52]: i = iter('zxcvbnm')
In [53]: i.__next__
Out[53]: <method-wrapper '__next__' of str_iterator object at 0x000002BB70F9FE48>
In [54]: i.__next__()
Out[54]: 'z'
In [55]: i.__next__()
Out[55]: 'x'
In [56]: next(i)
Out[56]: 'c'
2.创建自定义的迭代器
可以编写一个具有 __next__方法的类,只要这个类提供返回迭代器示例的__iter__特殊方法。
class CountDown:
def __init__(self, step):
self.step = step
def __next__(self):
"""return the next element"""
if self.step <= 0:
raise StopIteration
self.step -= 1
return self.step
def __iter__(self):
"""return the iterator itself"""
return self
用法示例:
In [63]: for element in CountDown(4):
...: print(element)
...:
3
2
1
0