4

私がジェネレーターを持っているとしましょう:

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()、データが残っていないのでエラーになります。

Python2.7.1を実行しています。

4

1 に答える 1

9

初回の反復g2はそれを消費するため、その後の反復を試みても何も残りません。

g1 = mygen()
for i in g1:
    g2 = mygen()
    for j in g2:
        print i, j
于 2012-05-10T17:10:37.770 に答える