5.1、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)

上一篇:2、Python3 环境搭建


下一篇:6、python集合,深浅copy