有人能解释一下为什么它只打印 3 行而不是 24 行的机制吗?我知道这是因为生成器函数已耗尽,但这是怎么回事?
def counter_gen(size):
cur=1
while cur <= size:
yield cur
cur +=1
c1=counter_gen(8)
c2=counter_gen(3)
for x in c1:
for y in c2:
print x,y
请您参考如下方法:
c2 在 3 次迭代后到达终点。再次迭代它不会做任何事情。这就是“耗尽”迭代器的意思。所以,在三个项目之后,它停止了。您的外部迭代器进行了 8 次,但是因为内部迭代器只进行了 3 次,所以只有第一个外部迭代器执行任何操作。接下来的 7 次尝试遍历耗尽的迭代器,但没有任何反应。
如果您希望c2 的新 迭代从c1 的每次迭代开始,只需这样写即可!
c1=counter_gen(8)
for x in c1:
c2=counter_gen(3)
for y in c2:
print x, y
或者,完全取消 c1 和 c2:
for x in counter_gen(8):
for y in counter_gen(3):
print x, y
