我有一个非常基本的生成器,您可以在循环期间通过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”值?你知道吗
谢谢你的帮助。你知道吗
问题是
send
调用实际上运行一个迭代并返回一个值,而您没有对它做任何操作。你知道吗试试这个:
https://repl.it/repls/RuddyConcretePrinters
正如@Imreal和@Abarnert所指出的,
myGen.send(20)
产生缺失的20。您可以通过将迭代更改为以下内容来解决问题:它返回以下输出:
相关问题 更多 >
编程相关推荐