[python]迭代器和yield

迭代器

迭代器是一个实现了迭代器协议的容器对象,它基于下面两个方法。

  • 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]

参考资料

  1. python 高级编程(第二版)Michal Jaworski

猜你喜欢

转载自blog.csdn.net/siyue0211/article/details/80560913
今日推荐