浅拷贝与深拷贝

浅拷贝:不是完全新的对象(只拷贝的父对象,而不会拷贝里面的子对象,子对象仍然是原来对象的子对象)
1:列表自身切片赋值
2:导入copy模块,然后再copy.copy(listname)可浅拷贝,但嵌套列表的作用效果可以作用在浅拷贝上
应用:改变列表中的嵌套列表可以用浅拷贝,而源列表中的子元素不改变,只是源列表中的嵌套列表随着源列表的改变而改变
深拷贝:完全是一个新的对象(对父对象进行了拷贝,也对子对象进行了拷贝。是一个全新的对象了)
copy.deepcopy(listname)

# 浅拷贝

import copy

a = [1,2,3,4,5,6,[1,2,3,44]]
b = a[:] # 切片赋值,这里的切片赋值为啥没受到源列表改变的影响,缘由切片赋值可以看成是浅拷贝
c = copy.copy(a) # 浅拷贝
d = copy.deepcopy(a) # 深拷贝
e = a # 直接赋值,还是作用在同一个对象上
# 修改原列表的值

a[0] = 11
a[-1][-1] = 16 # 嵌套列表的作用效果可以作用在浅拷贝上
print(e,id(e))
print(a,id(a))
print(b,id(b))
print(c,id(c))
print(d,id(d))
posted @ 2021-07-29 20:11  索匣  阅读(29)  评论(0编辑  收藏  举报