gpt4 book ai didi

python - 请在此示例中解释生成器机制

转载 作者:太空宇宙 更新时间:2023-11-04 08:13:32 25 4
gpt4 key购买 nike

有人能解释一下为什么它只打印 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

或者,完全取消 c1c2:

for x in counter_gen(8):
for y in counter_gen(3):
print x, y

关于python - 请在此示例中解释生成器机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com