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(),我会收到一个错误,因为没有剩余数据。

我正在运行 Python 2.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 回答