Вложенность экземпляров одного и того же генератора в Python [дубликат]


На этот вопрос уже есть ответ здесь:

Скажем, у меня есть генератор:

def mygen():
    for i in range(10):
        yield i

Это работает так, как я ожидал: все комбинации i и j

for i in mygen():
    for j in mygen():
        print i, j
Я бы сказал, что это разные примеры. Почему они не ведут себя по-другому примеры?
g1 = mygen()
g2 = mygen()

for i in g1:
    for j in g2:
        print i, j

Если я попытаюсь g1.next(), я получу ошибку, потому что не осталось данных.

Я запускаю Python 2.7.1.

1 4

1 ответ:

Повторение g2 в первый раз потребляет его, поэтому ничего не остается, когда вы пытаетесь повторить его в последующие разы.

g1 = mygen()
for i in g1:
    g2 = mygen()
    for j in g2:
        print i, j