文章详情页
python - 用生成器迭代数据在文件和IDLE中运行结果不一致,
浏览:151日期:2022-06-30 18:38:38
问题描述
使用生成器迭代数据构造丢失问题,同样的代码运行结果不一致:
文件方式运行得到结果为:5 2 1 0
Python自带IDLE运行得到结果为:5 3 2 1 0
def countdown(n): while n >= 0:newvalue = (yield n)if newvalue is not None: n = newvalueelse: n -= 1c = countdown(5)for n in c: print(n) if n == 5:c.send(3)

问题解答
回答1:不要对正在遍历的对象进行修改, 那样会导致索引混乱, 无法达到我们想要的结果, 可以通过enumerate查看遍历过程中, 索引的变化
for index, n in enumerate(c): # index 为取到的索引值 print(index, n) if n == 5:c.send(3)
相关文章:
1. browsersync一次只能检测一个HTML文件?2. 修改mysql配置文件的默认字符集重启后依然不生效3. Java:使用URL下载图片为何图片下载不完全呢?4. Java使用数组的速度比C ++中std :: vector快8倍。我做错什么了?5. html5 - 在Mac里使用vscode,却无法使用已下载的扩展……6. java - mybatis源码分析7. docker网络端口映射,没有方便点的操作方法么?8. css - html根字体设置成很大的值后, 包裹了行内元素的div莫名变高是什么原因9. 请教一个python字符串处理的问题?10. docker容器呢SSH为什么连不通呢?
排行榜

网公网安备