首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迭代时从列表中移除迭代时跳过迭代

迭代时从列表中移除迭代时跳过迭代
EN

Stack Overflow用户
提问于 2019-02-11 23:54:02
回答 1查看 21关注 0票数 1

我不知道我是不是错过了什么,但我对此感到困惑。我正在迭代一个列表,并根据条件删除一些元素。当满足条件时,它将跳过下一次迭代。例如:

代码语言:javascript
复制
l = [1,1,2,3,1]
for i in l:
    print(f'checking {i} in {l}')
    if i == 1:
        print(f'removing')
        l.remove(i)

这就回来了

代码语言:javascript
复制
checking 1 in [1, 1, 2, 3, 1]
removing
checking 2 in [1, 2, 3, 1]
checking 3 in [1, 2, 3, 1]
checking 1 in [1, 2, 3, 1]
removing

然后是l=[2,3,1]。我认为正在发生的是按索引迭代,所以当某个东西被移除时,迭代中的当前索引将被关闭一个。有办法做到这一点而不跳过元素吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-11 23:56:58

永远不要改变你正在迭代的容器,直到你真正知道你在做什么--在l[:]上迭代,从l中删除。

您对问题的理解是- for循环不直接迭代列表值,更改列表大小中断索引。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54640871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档