有人請解釋使用生成器的嵌套循環的行爲嗎?這是一個例子。發生器的Python嵌套循環不起作用(在某些情況下)?
a = (x for x in range(3))
b = (x for x in range(2))
for i in a:
for j in b:
print (i,j)
由於某種原因,在第一次迭代之後不對外環進行評估。結果是,
(0, 0)
(0, 1)
另一方面,如果生成器被直接插入到循環中,它會按我所期望的那樣操作。
for i in (x for x in range(3)):
for j in (x for x in range(2)):
print (i,j)
給出所有3x2對。
(0, 0)
(0, 1)
(1, 0)
(1, 1)
(2, 0)
(2, 1)
啊哈!我沒有注意到發電機的耗盡。非常感謝。 – phantomile 2012-07-19 21:34:17