Python - 为什么这个循环从列表中删除项目而不从列表中删除所有项目?

时间:2015-03-02 20:20:18

标签: python list

我有一个最简单的循环来从列表中删除项目,当我遍历列表项并打印它们时,它按预期工作。但是,当我尝试使用内置remove()list.remove(x))时,我得到了意想不到的结果:

>>> data = [1, 2, 3, 4, 5]

>>> for i in data:
        print(i)
1
2  
3
4 
5

>>> for i in data:
        data.remove(i)

>>>> data
[2, 4]

这里发生了什么?我的名单不应该是空的吗?

编辑:我不认为我的具体问题的答案已经回答了。我的问题是为什么行为正在经历,而其他相关的问题是询问如何正确地循环循环。我觉得这里有一些东西需要新手程序员在阅读相关问题时可能不会理解。如果有一个问题证明了我在答案中所写的内容,那么请务必将其标记为副本。

1 个答案:

答案 0 :(得分:1)

我犯了一个逻辑错误。当我的循环删除列表中的第一个条目时,第二个条目从2移动到索引1,第三个条目从3移动到索引2.因为' 2' 2现在位于列表的索引1中,它不会被删除,因为循环已从列表的索引1传递。

相关问题