遍历列表同时删除符合条件元素,结果不符合预期

本文通过一个Python代码示例,展示了在遍历列表过程中直接修改列表可能导致的问题。解释了为何在遍历过程中删除元素会导致后续元素跳过,并提出了解决方案:先创建列表副本,再遍历副本并对原列表进行操作。
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这个值是没有删除的

因此,遍历列表同时增减列表个数,需要先弄个列表副本,再遍历副本,然后操作原列表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值