2009-07-09 5 views

ответ

10

Каждый раз вы создаете новый генератор. Вы должны только позвонить по номеру testGen() один раз, а затем использовать возвращенный объект. Попробуйте:

w = 0 
g = testGen() 
while w < 10: 
    print g.next() 
    w += 1 

Тогда, конечно, есть нормальный, идиоматическое использование генератора:

for n in testGen(): 
    print n 

Обратите внимание, что это будет вызывать только testGen() один раз в начале цикла, а не один раз в итерации.

+2

И если вам нужен индекс 'w' в цикле, вы можете использовать встроенную функцию enumerate. –

+1

И если вам нужны только первые 10 элементов, используйте itertools.islice (testGen(), 10). –