列表的深拷貝與淺拷貝

2021-10-02 18:53:40 字數 1067 閱讀 3998

lst0 = [0, 1, 3, 3]

lst1 = [0, 1, 3, 3]

lst3 = [0, 1, 2, 3, [11, 12, 13, 14]]

print(lst0 == lst1 ) #true 比較兩個列表的值

print(lst0 is lst1) #false 比較兩個列表的id

lst1 = lst0 #lst0 lst1同時指向同乙個列表,所以改變任何乙個另乙個也隨之改變

lst1[2] = 10

print(lst1) #[0, 1, 10, 3]

print(lst0) #[0, 1, 10, 3]

lst1 = lst0.copy()

lst1[2] = 30

print(lst1) #[0, 1, 30, 3]

print(lst0) #[0, 1, 10, 3]

#淺拷貝

lst4 = lst3.copy()

lst4[2] = 20

print(lst4) #[0, 1, 20, 3, [11, 12, 13, 14]]

print(lst3) #[0, 1, 2, 3, [11, 12, 13, 14]]

lst4[4][1] = 26 #當內部為複雜結構時,只會將其位址拷貝過來,因此在修改lst4中的元素[11, 12, 13, 14]時,lst3也會相應改變

print(lst4) #[0, 1, 20, 3, [11, 26, 13, 14]]

print(lst3) #[0, 1, 2, 3, [11, 26, 13, 14]]

#深拷貝

Python 列表的 賦值拷貝 淺拷貝與深拷貝

一 文字說明 在對原有列表進行操作的時候,很有可能會修改原有列表的值,所以根據需要在這之前最好先將原有列表拷貝乙份,在對它的副本進行操作,而原列表保持不變。這個時候就需要注意 如何拷貝 的問題,因為它牽扯到 對於你新拷貝出來的列表進行操作是否還是會修改原有列表的值。通過學習,我有以下總結,對於列表一...

「淺拷貝」與「深拷貝」

c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...

淺拷貝與深拷貝

淺拷貝 1 2 myclass a,b a b 為了封裝性和解耦,同型別的兩個物件之間進行賦值操作時,所有成員變數被複製,包括私有成員 指標變數。類的成員函式在傳遞或返回物件時都會進行物件複製產生臨時物件,比如函式呼叫時實參變為形參,以及函式返回物件。考慮到效能和使用者要求不同,編譯器不複製物件內部...