有人能解释为什么它只打印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发布于 2013-08-18 23:36:44
经过3次迭代,c2达到了它的末尾。再迭代一次也无济于事。这就是“耗尽”迭代器的意思。所以,在三个项目之后,它停止了。外部迭代器执行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, yhttps://stackoverflow.com/questions/18304638
复制相似问题