gpt4 book ai didi

python - 屈服直到产生所有需要的值,有没有办法让 slice 变得懒惰

转载 作者:太空宇宙 更新时间:2023-11-03 13:05:43 24 4
gpt4 key购买 nike

当生成器未完成值并且已读取所有需要的结果时,有没有办法停止让步?我的意思是生成器在没有执行 StopIteration 的情况下提供值。

例如,这永远不会停止:(已修订)

from random import randint
def devtrue():
while True:
yield True

answers=[False for _ in range(randint(100,100000))]
answers[::randint(3,19)]=devtrue()
print answers

我找到了这段代码,但还不明白,在这种情况下如何应用它: http://code.activestate.com/recipes/576585-lazy-recursive-generator-function/

最佳答案

您可以在生成器对象上调用 close()。这样,在生成器中会引发 GeneratorExit 异常,进一步调用其 next() 方法将引发 StopIteration:

>>> def test():
... while True:
... yield True
...
>>> gen = test()
>>> gen
<generator object test at ...>
>>> gen.next()
True
>>> gen.close()
>>> gen.next()
Traceback (most recent call last):
...
StopIteration

关于python - 屈服直到产生所有需要的值,有没有办法让 slice 变得懒惰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3324947/

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