python的for循环下为什么不能直接删除列表的元素

举个例子:
a = [1, 2, 3, 4, 5]
for i in a:
a.remove(i)
print(a)
结果可以运行下是:[2, 4],本来是应该逐个删除的为什么还有元素留下来。我的理解是列表第一个数删除后,后面一个数自动补到前面那个数的位子,就比如说a中的1是a0,删掉了a0之后,下面就是删a1,但是a已经发生变化,a现在是[2, 3, 4, 5]。所以现在的a0是2,a1是3,就存在漏删的现象。所以需要创建一个列表的副本来删除列表的元素
可以这样:a = [1, 2, 3, 4, 5]
for i in a.copy():
a.remove(i)
print(a)
copy()就是创建列表的副本的方法。这样就可以删除列表的元素了,当然你也可以创建一个新的列表,设置判断条件来删除原列表的元素,可以这样:
a = [1, 2, 3, 4, 5]
b = [1, 2, 3, 4, 5]
for i in b:
a.remove(i)
print(a)
感觉这样应该好理解点吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值