python remove和del的区别,python 循环删除元素

l = [1,2,3,4]
l1 = l
l.remove(2)

print (l)

print (l1)

结果为:

[1,3,4]

[1,3,4]

原因是因为python中的赋值其实只是给了一个存该值的地址,remove的删除是将该地址上的值删掉了,如果使用del的话就不会出现这种情况,因为del是根据索引删除,

只删除本数组下该索引的位置


 
 
l = [1,2,3,4]
for i in l:
 if i != 4:
    l.remove(i)

print (l)

结果为[2,4]

原因是romove删除元素时会将原来存该元素的空间删掉,然后下一个元素自动递补到前面,同时长度减一。

循环删除容易出现数组越界的情况,这时候不能使用索引进行循环:

for i in range(0,len(a)):

if(a[i] == 3)

del.a[i]

如果这样进行删除,一定会出现索引out index的情况。

要使用分片的方式:

l = [1,2,2,3,2,4]
for x in l[:]:
    if (x == 2):
        l.remove(x)
print(l)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值