python3 深淺拷貝例項詳解

2021-09-03 03:12:04 字數 1306 閱讀 9446

list1 = [1,2,3]

list2 = list1 #list1賦值給list2

print(list1,list2,id(list1),id(list2))

[1, 2, 3, 4] [1, 2, 3, 4] 2701210018056 2701210018056>>> 結論:使用等號賦值list1和list2 指向同一記憶體位址

list1 = [1,2,3]

list2 = list1.copy() #list1賦值給list2

print(list1,list2,id(list1),id(list2))

[1, 2, 3, 4] [1, 2, 3] 1597546094984 1597546094664 >>>結論:使用copy函式賦值list1和list2 指向不同記憶體位址

list1 = [1,2,[3,4],5]

list2 = list1.copy()

print(list1,id(list1),list2,id(list2))

print(list1,id(list1),list2,id(list2))

print(list1,id(list1[2]),list2,id(list2[2]))

[1, 2, [3, 4], 5] 1930966720584 [1, 2, [3, 4], 5] 1930966687688

[1, 2, [3, 4], 5, 『x』] 1930966720584 [1, 2, [3, 4], 5] 1930966687688

[1, 2, [3, 4, 『y』], 5, 『x』] 1930966720904 [1, 2, [3, 4, 『y』], 5] 1930966720904

結論copy函式進行的拷貝稱做淺拷貝。列表的記憶體位址是不同的,列表內元素的記憶體位址相同。

import copy

list1 = [1,2,[3,4],5]

list2 = copy.deepcopy(list1)

print(list1,id(list1[2]),list2,id(list2[2]))

[1, 2, [3, 4, 『x』], 5] 1854232977736 [1, 2, [3, 4], 5] 1854232978120

結論,深拷貝拷貝的列表,完全沒有任何關係

Python3 深淺拷貝

在python中物件的賦值其實就是物件的引用。當建立乙個物件,把它賦值給另乙個變數的時候,python並沒有拷貝這個物件,只是拷貝了這個物件的引用而已。1,變數 是乙個系統表的元素,擁有指向物件的連線空間。2,物件 被分配的一塊記憶體,儲存其所代表的值。3,引用 是自動形成的從變數到物件的指標。4,...

python3 深淺copy對比詳解

一 賦值對比 1 列表 l1 1,2,3 l2 l1 l1.append a pri 1,2,3,a 1,2,3,a print id l1 id l2 43499848 43499848 可以看到兩個列表的值以及id值相同,對應的是同乙個記憶體位址 2 字典 dic dic1 dic dic ag...

深淺拷貝詳解

字典淺拷貝例項例項1 2345 67 a b a.copy a,b a 14 a,b 深度拷貝需要引入 copy 模組 例項1 2345 67 importcopy c copy.deepcopy a a,c a 15 a,c 1 b a 賦值引用,a 和 b 都指向同乙個物件。2 b a.copy...