首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按索引弹出for循环留下偶数索引

按索引弹出for循环留下偶数索引
EN

Stack Overflow用户
提问于 2019-01-24 05:34:41
回答 1查看 65关注 0票数 1

如果之前已经有人问过了,我很抱歉,但我找不到任何类似的东西。

在python中,我需要弹出一些项目来穷尽列表。

我写了以下内容来理解一些逻辑,但我不明白到底是怎么回事。

我期望一个for循环迭代列表中的每一项,并相应地弹出每一项。

但是,当我运行以下命令时,它只弹出odd索引:[1, 3, 5, 7, 9]even索引保持为[2, 4, 6, 8, 10]

代码语言:javascript
运行
复制
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for code in l:    
    l.pop(l.index(code))
print(l) # [2, 4, 6, 8, 10]

我设法通过使用while循环完成了这项工作:

代码语言:javascript
运行
复制
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
while l:
    for code in l:    
        l.pop(l.index(code))
print(l) # []

为什么在这种情况下for循环只弹出奇数索引?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-24 05:54:32

for item in list命令创建一个临时索引列表(也可以有步长),该列表保持静态,在Python中的循环执行期间不能更改。因此,indices = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]将永久保留。当您在每次迭代中弹出后遍历其余元素时,尽管列表完全更改,但索引不会更改。

您可以使用while循环来完成此操作,因为它会迭代地工作,直到清空整个列表。下面显示的while循环每次迭代后的值确认每个for循环只删除奇数元素。

[2, 4, 6, 8, 10] [4, 8] [8] []

for循环中,Python不会考虑在它迭代的值中所做的更改。

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

https://stackoverflow.com/questions/54336019

复制
相关文章

相似问题

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