num_list = [1, 2, 3, 4, 5]
print(num_list)
for item in num_list:
if item == 2 or item == 3 or item == 4 :
num_list.remove(item)
else:
print(item)
print(num_list)
运行结果:
[1, 2, 3, 4, 5]
1
[1, 3, 5]
过程如下:
下标为0,item 取值1,不符合条件,没有删除
下标为1,item 取值2,符合条件,删除元素,这时 列表变为 [1, 3, 4, 5]
下标为2,item 取值4,符合条件,删除元素,这时列表变为 [1, 3, 5]
下标为3,没有继续遍历下去了。3这个值是没有删除的
因此,遍历列表同时增减列表个数,需要先弄个列表副本,再遍历副本,然后操作原列表
本文通过一个Python代码示例,展示了在遍历列表过程中直接修改列表可能导致的问题。解释了为何在遍历过程中删除元素会导致后续元素跳过,并提出了解决方案:先创建列表副本,再遍历副本并对原列表进行操作。
406

被折叠的 条评论
为什么被折叠?



