python - 在Python中迭代列表和删除元素时的奇怪行为

标签 python loops

我试图迭代一个Python列表,并在完成一些任务后删除每个元素,但每次迭代后它都会跳转一个元素,我不知道为什么:

>>> simple_list = list(range(10))
>>> simple_list
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


>>> for i in simple_list:
...     print(i)
...     simple_list.remove(i)
... 
0
2
4
6
8

>>> simple_list
[1, 3, 5, 7, 9]

有谁知道为什么会这样吗?仅删除偶数元素,并且看起来循环不会穿过不均匀的元素。

最佳答案

好吧,当你迭代它时,你的列表正在缩小。如果您愿意,只需在迭代第一个元素时查看它即可。

while len(simple_list) > 0:
    print(simple_list[0])
    del simple_list[0]

关于python - 在Python中迭代列表和删除元素时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51132277/

相关文章:

python - 我怎样才能改变我的Python代码,以便它可以更有效地将txt文件转换为CSV?

python - 无法将当前 flask 请求上下文复制到多个 gevent 线程

python - 从一系列图像中找出最大的 x,y 值

javascript - 无限循环的数字滚动条,直到按下停止按钮

python - 在 python 中抑制 shell 命令的详细输出

python - 使用 Python 检查 PDF 文件是否有效

java - if-else 中嵌套 do-while 循环 : variable not initialized

python - forloop.counter 表示 for 标签已经循环了多少次

javascript - 使用 Divs 类的 setInterval 循环有困难

javascript 选中一个带有值的框