当生成器没有完成值并且所有需要的结果都被读取时,有没有办法停止让步?我的意思是生成器在不做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/
发布于 2010-07-25 15:29:21
与Haskell中的take函数类似,您可以基于另一个生成器构建一个“有限的”生成器:
def take(n,gen):
'''borrowed concept from functional languages'''
togo=n
while togo > 0:
yield gen.next()
togo = togo - 1
def naturalnumbers():
''' an unlimited series of numbers '''
i=0
while True:
yield i
i=i+1
for n in take(10, naturalnumbers() ):
print n你可以用一个“直到”生成器,一个"while",...
def gen_until( condition, gen ):
g=gen.next()
while( not condition(g) ):
yield g
g=gen.next()并像这样使用它
for i in gen_until( lambda x: x*x>100, naturalnumbers() ):
print i..。
https://stackoverflow.com/questions/3324947
复制相似问题