gpt4 book ai didi

Python 生成器截止

转载 作者:行者123 更新时间:2023-11-28 19:57:22 24 4
gpt4 key购买 nike

我有一个生成器,它会不断给出遵循特定公式的数字。为了争论起见,我们假设这是函数:

# this is not the actual generator, just an example
def Generate():
i = 0
while 1:
yield i
i+=1

然后我想从该生成器中获取低于特定阈值的数字列表。我试图找出一种 pythonic 的方式来做到这一点。我不想编辑函数定义。我知道你可以只使用一个 while 循环,你的截止作为条件,但我想知道是否有更好的方法。我试了一下,但很快意识到为什么它行不通。

l = [x for x in Generate() x<10000] # will go on infinitely

那么有没有正确的做法呢。

谢谢

最佳答案

itertools创建另一个迭代器的解决方案:

from itertools import takewhile
l = takewhile(lambda x: x < 10000, generate())

如果您确定需要一个列表,请将其包装在 list() 中:

l = list(takewhile(lambda x: x < 10000, generate()))

或者如果你想要一个列表并且喜欢发明轮子:

l = []
for x in generate():
if x < 10000:
l.append(x)
else:
break

关于Python 生成器截止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14653870/

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