python - 我的迭代器中缺少一个值,我不知道为什么
问题描述
我有一个非常基本的生成器,您可以在循环期间通过 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
调用实际上运行了一个迭代并返回一个值,而你没有对它做任何事情。
尝试这个:
print(myGen.send(20))
推荐阅读
- c++ - 链接两个独立的 cmake 项目,其中一个依赖于另一个
- python - 在 Web 服务器中时无法从 Python 打印(到打印机)
- python - Python中具有相同权重的顶点的加权子图程序
- flutter - 带参数的命名路由
- node.js - node.js 如何处理跳过的可选参数
- java - 在 Spring-Boot 上启动 Web 应用程序时出错
- flutter - 强制 Flutter 手动选择 iOS 团队
- java - 在 ColdFusion 11 中使用 ImageReadBase64() 读取大图像时出现“java.lang.OutOfMemoryError:Java 堆空间”
- sql-server - 运行 SQL Server 存储过程的 Power Query 数据类型转换问题
- ios - Xcode 12.2 中的错误:配置文件不包括推送通知权利