Python编程:赋值,浅拷贝,深拷贝

2023-03-27  本文已影响0人  小小一颗卤蛋

赋值 :

赋值:相当于起了一个别名,两者指向的是同一个对象


image.png
list2=[1,2,3,4,5,6,[7,8]] list2_new=list2  #赋值,对列表赋值时,相当于起了一个别名,两者指向的是同一个对象 
list2[0]=96 
print(list2,id(list2)) 
print(list2_new,id(list2_new))
image.png

浅拷贝

image.png
import copy list2_new=copy.copy(list2)  #浅拷贝,生成了一个新的对象,子列表仍然是同一个对象 
list2[0]=96  #修改list2的值,不会影响list2_new 
list2[-1][0]=1998  #修改list2的子列表的值,list2_new的值也会变化 
print(list2,id(list2),id(list2[-1])) 
print(list2_new,id(list2_new),id(list2_new[-1]))
image.png

切片,等价于浅拷贝

list2_new=list2[:]  #相当于copy.copy(list2) 
list2[0]=96 
list2[-1][0]=1998 
print(list2,id(list2),id(list2[-1])) 
print(list2_new,id(list2_new),id(list2_new[-1]))

深拷贝

image.png
list2_new=copy.deepcopy(list2)  #深拷贝,列表与子列表都是新的对象 
list2[-1][0]=1998  #修改list2的子列表的值,不会影响list2_new 
print(list2,id(list2),id(list2[-1])) 
print(list2_new,id(list2_new),id(list2_new[-1]))
上一篇 下一篇

猜你喜欢

热点阅读