Python 使用del函数和remove函数注意点

最近在写项目中使用到del函数和remove函数,出现了一些常识性但又容易忘记的错误,在这里记录一些,也是给自己提醒一下。

首先,del和remove的区别,很好理解。

del:利用del[索引数] 函数删除指定索引数的元素 或删除整个变量

remove:用remove()方法删除指定元素

但是两者之间也是有共存点的,先看一下例子。

#对使用del
x=[1,2,3,5,2]
y=x  #将x赋给y

del y[2]
print('del删除后对应输出y:',y)
print('输出x:',x)

对使用remove
x=[1,2,3,5,2]
y=x  #将x赋给y

y.remove(2)
print('remove删除后对应输出y:',y)
print('输出x:',x)

结果是:

del删除后对应输出y: [1, 3, 5, 2]
输出x: [1, 3, 5, 2]

remove删除后对应输出y:[1, 3, 5, 2]
输出x: [1, 3, 5, 2]

两个结果是一样,对del和remove的结果当然是一样的,但是x也变了,这个就是引用删除,个人理解是del和remove删除了内存里对应的值,因此所有的引用里的值也都改变了。再看一个例子。

#del例子
def app_del(a):
    b=a
    del b[1]
    return b

if __name__=='__main__':
    a=[1,2,3,5,2]
    c=app_del(a)
    print('a的值',a)
    print('del对应c的值',c)

#remove例子

def app_remove(a,i):
    b=a
    b.remove(i)
    return b

if __name__=='__main__':
    a=[1,2,3,5,2]
    c=app_remove(a,2)
    print('a的值',a)
    print('remove对应c的值',c)

输出结果为:

a的值 [1, 3, 5, 2]
del对应c的值 [1, 3, 5, 2]

a的值 [1, 3, 5, 2]
remove对应c的值 [1, 3, 5, 2]

可以发现就是在函数中,使用了del和remove同样也会删除了内存中对应的变量。

而在开发中往往想删除引用中的量,如果留意这个简单的问题,会给自己带来不小的麻烦,会一直报错,哎·····,自己就是啊,找了半天的错误,所以在使用之前一定要考虑要不要保留一份,如果对后面的开发没有影响,那就没有问题,如果有影响,个人建议最好保存一份,使用copy函数,如

def app_del(a):
    b=a
    del b[1]
    return b

if __name__=='__main__':
    a=[1,2,3,5,2]
    b=a.copy()
    c=app_del(a)
    print('a的值',a)
    print('b的值',b)
    print('c的值',c)

输出结果:
a的值 [1, 3, 5, 2]
b的值 [1, 2, 3, 5, 2]
c的值 [1, 3, 5, 2]

OK了,remove也是相同的,以后在写代码的时候要注意点了,所以啊基础知识很重要啊。

猜你喜欢

转载自blog.csdn.net/qq_33047753/article/details/105949679