【发布时间】:2018-10-24 14:37:24
【问题描述】:
我有一个非常基本的生成器,您可以在循环期间通过 yield 回调发送一个新值:
def GenInter(x, y):
while (x+1 < y):
callback = (yield x)
if callback is not None:
x = callback
else:
x += 1
然后,我创建一个生成器:
myGen = GenInter(10,25)
最后,我用 for 循环解析它。到“15”时,我想直接转到“20”。
for x in myGen:
if x == 15:
myGen.send(20)
print(x)
结果如下:
10
11
12
13
14
15
21
22
23
“20”值怎么不见了?
感谢您的帮助。
【问题讨论】:
-
当你在 15 中推进迭代器时,但在下一次迭代中它再次推进,这就是你错过它的原因
-
myGen.send(20)将产生20,您可以忽略它。下一次循环时,你会得到21。
标签: python loops iterator generator yield