为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我需要先将生成器函数存储到变量中?

为什么我需要先将生成器函数存储到变量中?

慕雪6442864 2021-10-26 18:14:49
我正在探索在 python 中使用生成器,但我遇到了一个奇怪的问题。以下代码怎么能按预期工作(例如,每次调用函数时都返回下一个斐波那契数):def fibonacci():                                           current, previous = 0,1                                 while True:                                                 yield current        current, previous = current + previous, currentfib = fibonacci()for i in range(0,21):    print(next(fib))但是当我直接在 for 循环中调用该函数时,如下所示:for i in range(0,21):    print(next(fibonacci()))它打印出 21 个零?
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

正如克里斯在他的评论中所说:


因为那样你会在每次迭代中创建新的生成器对象,一遍又一遍地获取第一个元素。


您可以通过直接迭代它来避免将其分配给变量。这样你只创建一个生成器对象:


for n, i in zip(fibonacci(), range(0,21)):

    print(n)


查看完整回答
反对 回复 2021-10-26
  • 1 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号