文章详情页
python - 用生成器迭代数据在文件和IDLE中运行结果不一致,
浏览:143日期: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. python的MySQLdb库中的executemany方法如何改变默认加上的单引号?2. angular.js - angularjs ng-class指令改变ng-click点击的class属性失效3. python爬虫 - scrapy使用redis的时候,redis需要进行一些设置吗?4. 前端HTML与PHP+MySQL连接5. angular.js - angular指令中的scope属性中用&获取父作用域函数的问题6. mysql5.7就没有官方性质的详细配置文件吗?求大神告知7. node.js - 问个问题 Uncaught (in promise)8. 如何解决docker宿主机无法访问容器中的服务?9. python 读取csv文件可以读取但内容错误,但单独用excel打开正常,如何解决?10. python - 如何用pandas处理分钟数据变成小时线?
排行榜

网公网安备