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)