淺拷貝:不是完全新的物件(只拷貝的父物件,而不會拷貝裡面的子物件,子物件仍然是原來物件的子物件)
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))
「淺拷貝」與「深拷貝」
c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...
淺拷貝與深拷貝
淺拷貝 1 2 myclass a,b a b 為了封裝性和解耦,同型別的兩個物件之間進行賦值操作時,所有成員變數被複製,包括私有成員 指標變數。類的成員函式在傳遞或返回物件時都會進行物件複製產生臨時物件,比如函式呼叫時實參變為形參,以及函式返回物件。考慮到效能和使用者要求不同,編譯器不複製物件內部...
「淺拷貝」與「深拷貝」
c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...