gpt4 book ai didi

python - 无限产量问题

转载 作者:太空狗 更新时间:2023-10-30 00:25:39 25 4
gpt4 key购买 nike

这是我的简单代码

class Fibonacci:
@staticmethod
def series():
fprev = 1
fnext = 1
yield fnext
while True:
yield fnext
fprev,fnext = fnext,fprev+fnext

under10 = (i for i in Fibonacci.series() if i<10)
for i in under10 :
print i

这很明显,但是......为什么解释器正在执行 block

while True:
yield fnext
fprev,fnext = fnext,fprev+fnext

永远?我在生成器中指定,我只需要元素<10

under10 = (i for i in Fibonacci.series() if i<10)

恕我直言,有点误会有什么方法可以在不重写“系列”的情况下防止无限执行?

最佳答案

解释器如何知道所有 future 的数字都将小于 10?它要么知道(以某种方式)它正在生成斐波那契数列,要么必须检查整个数列。

它不能做第一个,所以它会做第二个。

您可以使用 itertools.takewhile 修复此问题:

import itertools

under10 = itertools.takewhile(lambda n: n < 10, Fibonacci.series())

关于python - 无限产量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4071207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com