list.append(next(PrimeGen)) > StopIteration 当它在我-6ren">
gpt4 book ai didi

Python 生成器返回停止迭代?

转载 作者:行者123 更新时间:2023-11-28 20:09:09 25 4
gpt4 key购买 nike

我不明白为什么输出结果是这样的:

>  File "<pyshell#177>", line 6, in func
> list.append(next(PrimeGen))
> StopIteration

当它在我脑海中如此有意义时!无论如何,基本上我正在尝试使用 ifprime 函数和一个生成器来制作一个素数生成器来收集列表中的素数。

判断是否为素数,如果是则返回值,否则不返回任何值。

def prime(x):
if (2**(x-1))%x ==1:
return x

这使得生成器应该返回一个包含最多 x 个素数的列表,但却给出了上面的错误。我开始列表时里面有一个 2,因为上面的函数 prime(x) 不认为 2 是素数(所以范围将从 3 开始)

def func(x):
count=0
list=[2]
PrimeGen = (prime(X) for X in range(3,x+1))
while count<99:
list.append(next(PrimeGen))
count+=1
print list

谁能解释为什么它不起作用?先感谢您!五、

最佳答案

生成的值少于 99 个。使用 itertools.islice() 而不是循环。

关于Python 生成器返回停止迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11766287/

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