當發生器沒有完成數值並且讀取所有需要的結果時,是否有辦法停止屈服?我的意思是說,發電機在沒有做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/
這不應該是不可能的,例如見/ dev/random pseudofile。除了stringIO之外,我們是否需要generatorIO軟件包? – 2010-07-24 12:23:47
這不是不可能的。你寫了一個無限生成器,並得到你所要求的。我給了你一個我爲了清晰起見而簡化了的例子。 – msw 2010-07-24 12:39:55
問題不是發電機,這是我想要的:發電機總是給出相同的價值。我只需要切片充當迭代器(列表是可迭代的),並在切片結束時執行StopIteration。 – 2010-07-24 13:43:03