Y a-t-il moyen d'arrêter de céder lorsque le générateur n'a pas fini les valeurs et que tous les résultats nécessaires ont été lus? Je veux dire que ce générateur donne des valeurs sans jamais faire StopIteration.Rendement jusqu'à ce que toutes les valeurs nécessaires soient cédées, est-il possible de faire une tranche pour devenir paresseux
Par exemple, cela ne cesse jamais: (RÉVISÉ)
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
J'ai trouvé ce code, mais ne comprends pas encore, comment l'appliquer dans ce cas: http://code.activestate.com/recipes/576585-lazy-recursive-generator-function/
Cela ne devrait pas être impossible, voir par exemple/dev/random pseudofile. Peut-être avons-nous besoin d'un package generatorIO en plus de stringIO? –
Ce n'est pas impossible. Vous avez écrit un générateur infini et obtenu ce que vous avez demandé. Je vous ai donné un exemple que je viens de simplifier pour plus de clarté. – msw
Le problème n'est pas le générateur, ce que je voulais: le générateur donnant toujours la même valeur. Je voudrais seulement que la tranche agisse comme itérateur (la liste est itérable tu sais) et fait le StopIteration à la fin de la tranche. –