– Start
什么是迭代器?
迭代器其实是一个规范,实现了这个规范的类就可以在 for 循环中使用,如我们之前学的列表,元组等。
自定义迭代器
下面的例子定义了一个随机迭代器。
import random
class MyContainer:
def __init__(self, *elements):
self._elements = list(elements)
# 自定义迭代器需要实现 __iter__ 方法来返回 iterator 对象
def __iter__(self):
random.shuffle(self._elements)
self._cursor = 0
return self
# 自定义迭代器需要实现 __next__ 方法来提供下一个元素
def __next__(self):
if self._cursor >= len(self._elements):
# 迭代完后抛出 StopIteration 异常
raise StopIteration()
e = self._elements[self._cursor]
self._cursor += 1
return e
# 实例化 MyContainer
mc = MyContainer(1, 2, 3)
# 测试
i = iter(mc) # 使用 iter 构造迭代器
print(next(i)) # 使用 next 获取下一个元素
print(next(i))
print(next(i))
#print(next(i))
# 使用 for 循环
for e in mc:
print(e)
通常我们不需要自定义迭代器,但是迭代器是函数式编程的基础,非常重要。
– 更多参见:Python 精萃
– 声 明:转载请注明出处
– Last Updated on 2018-09-29
– Written by ShangBo on 2018-09-29
– End