首页 > 解决方案 > 我的迭代器中缺少一个值,我不知道为什么

问题描述

我有一个非常基本的生成器,您可以在循环期间通过 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”值?

谢谢您的帮助。

标签: pythonloopsiteratorgeneratoryield

解决方案


问题是send调用实际上运行了一个迭代并返回一个值,而你没有对它做任何事情。

尝试这个:

print(myGen.send(20))

https://repl.it/repls/RuddyConcretePrinters


推荐阅读