[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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值