赋值
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
浅拷贝
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]))
深拷贝
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]))