Python高階 深淺拷貝

2021-10-08 21:06:50 字數 937 閱讀 7278

定義

對於乙個物件的頂層拷貝(拷貝引用,不拷貝資料)

對於 不可 變型別 number string tuple,淺複製僅僅是位址指向,不會開闢新空間

對於 可 變型別 list、dictionary、set,淺複製會開闢新的空間位址(僅僅是最頂層開闢了新的空間,裡層的元素位址還是一樣的),進行淺拷貝

淺拷貝後,改變原始物件中為可變型別的元素的值,會同時影響拷貝物件的;改變原始物件中為不可變型別的元素的值,只有原始型別受影響。

import copy

alist =[[

1],2

]blist = copy.copy(alist)

print(id

(alist)

)print(id

(blist)

)# 兩次id不同

print(id

(alist[0]

))print(id

(blist[0]

))# 兩次id相同,內部未拷貝,僅僅是拷貝了最外層的引用

定義

深拷貝,除了頂層拷貝,還對子元素也進行了拷貝(本質上遞迴淺拷貝)

經過深拷貝後,原始物件和拷貝物件所有的元素位址都沒有相同的了

import copy

alist =[[

1],2

]blist = copy.deepcopy(alist)

print(id

(alist)

)print(id

(blist)

)# 兩次id不同

print(id

(alist[0]

))print(id

(blist[0]

))# 兩次id不同,內部進行了拷貝

Python高階 深淺拷貝

python高階 深淺拷貝 深淺拷貝 1 深拷貝 深拷貝就是將所有的都進行拷貝,包括內層,深拷貝屬於遞迴拷貝,很是耗費記憶體。2 淺拷貝 淺拷貝就是只拷貝最外面一層,子物件會受到原始資料的影響,但是前拷貝節約記憶體,浪費少。3 物件的拷貝 引用傳遞不是拷貝,引用傳遞是位址的拷貝。4 拷貝格式 匯入模...

python高階 深淺拷貝

is與的區別 在講is和這兩種運算子區別之前,首先要知道python中物件包含的三個基本要素,分別是 id 身份標識 type 資料型別 和value 值 is和 都是對物件進行比較判斷作用的,但對物件比較判斷的內容並不相同。下面來看看具體區別在哪。比較操作符和is同一性運算子區別 是python標...

python高階 深淺拷貝 16

淺拷貝是對乙個物件的頂層拷貝,通俗地講就是 拷貝了引用,並沒有拷貝內容。a 1,2,3 print id a b aprint b print id b print a print b 執行結果為 1965053928072 1,2,3 1965053928072 1,2,3,4 1,2,3,4 深...