用生成器迭代数据在文件和IDLE中运行结果不一致,

发布于 2022-09-04 20:08:02 字数 533 浏览 24 评论 0

使用生成器迭代数据构造丢失问题,同样的代码运行结果不一致:

  1. 文件方式运行得到结果为:5 2 1 0

  2. Python自带IDLE运行得到结果为:5 3 2 1 0

def countdown(n):
    while n >= 0:
        newvalue = (yield n)
        if newvalue is not None:
            n = newvalue
        else:
            n -= 1


c = countdown(5)
for n in c:
    print(n)
    if n == 5:
        c.send(3)

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千纸鹤 2022-09-11 20:08:02

不要对正在遍历的对象进行修改, 那样会导致索引混乱, 无法达到我们想要的结果, 可以通过enumerate查看遍历过程中, 索引的变化

for index, n in enumerate(c):
    # index 为取到的索引值
    print(index, n)
    if n == 5:
        c.send(3)
        
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文