迭代器
迭代器是一个实现了迭代器协议的容器对象,它基于下面两个方法。
- next: 返回容器的下一个元素
- iter:返回迭代器本身
>>>i = iter('abc')
>>>next(i)
'a'
>>>next(i)
'b'
>>>next(i)
'c'
>>>next(i)
报StopIteration异常
yield语句
生成器提供了一种优雅的方法,可以让编写返回元素序列的函数所需要的代码变得简单、高效。基于yield语句,生成器可以暂停函数并且返回一个中间结果。该函数会保存执行上下文,稍后在必要时可以恢复。
斐波那契:
def fibonacci():
a, b = 0, 1
while True:
yield b
a, b = b, a + b
fib = fibonacci()
next(fib)
next(fib)
next(fib)
result = [next(fib) for i in range(10)]
print(result)
result:
[3, 5, 8, 13, 21, 34, 55, 89, 144, 233]
参考资料
- python 高级编程(第二版)Michal Jaworski