有人可以解释一下使用生成器的嵌套循环的行为吗?这是一个例子。
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)