python 賦值 深拷貝 淺拷貝隨筆

2021-10-04 03:55:29 字數 1943 閱讀 1303

print

('初始賦值後,我們先來看兩個變數指向的是同一物件'

)alist =[1

,2,[

3,4]

]blist =alist

print

(alist)

print

(blist)

print(id

(alist)

)print(id

(blist))5

)print

('重新賦值後,列表指向的物件並未發生改變,故而賦值改變乙個變數,實際改變同乙個物件,兩個變數值一併改變'

)print

(alist)

print

(blist)

print(id

(alist)

)print(id

(blist)

)

2、淺拷貝

import copy#該處引用乙個內建函式

print(''

)alist =[1

,2,[

3,4]

]blist =copy.copy(alist)

print

(alist)

print

(blist)

print(id

(alist)

)print(id

(blist)

)print(''

)5)#修改父級拷貝的列表,不會影響到被拷貝的源列表

print

(alist)

print

(blist)

print(id

(alist)

)print(id

(blist)

)print(''

)blist.remove(5)

print(id

(alist)

)print(id

(blist)

)blist[-1

]5)#改變列表中某乙個元素的內容,對應的父級列表源列表alist也會被修改

print

(alist)

print

(blist)

print(id

(alist)

)print(id

(blist)

)

3、深拷貝

import copy#該處引用乙個內建函式

print(''

)alist =[1

,2,[

3,4]

]blist =copy.deepcopy(alist)

#深淺拷貝關鍵不同的地方

print

(alist)

print

(blist)

print(id

(alist)

)print(id

(blist)

)print(''

)5)#修改父級拷貝的列表,不會影響到被拷貝的源列表

print

(alist)

print

(blist)

print(id

(alist)

)print(id

(blist)

)print(''

)blist.remove(5)

print(id

(alist)

)print(id

(blist)

)blist[-1

]5)#改變列表中某乙個元素的內容,對應的父級列表源列表不會被修改

print

(alist)

print

(blist)

print(id

(alist)

)print(id

(blist)

)

Python 賦值 淺拷貝 深拷貝

賦值 a b,只拷貝了物件的引用,沒有拷貝內容。兩個物件的id一樣 淺拷貝 copy.copy 構造乙個新的復合物件,然後將子物件引用插入到原始物件的副本中。深拷貝 copy.deepcopy 構造乙個新的復合物件,然後遞迴地將子物件副本插入原始物件的副本。給個栗子 從這個栗子可以看出,對c進行修改...

python賦值 淺拷貝 深拷貝

視覺化 首先了解知識點 可變 list,dict 和不可變 string,int,tuple 淺拷貝 對於string int來說沒有意義,因為它們資料就一層,對於tuple由於是不可變型別所以新的物件會指向原來的物件位址,對於list和dict,新的物件會在記憶體中開闢乙個新的記憶體空間,並且只拷...

淺拷貝 深拷貝和淺賦值 深賦值

include includeusing namespace std class string else 淺拷貝 也就是系統預設的拷貝,可寫可不寫。string const string s 預設的拷貝構造 深拷貝 string const string s string s2 s1 深賦值 str...