1、賦值變化
a = [1,2,3]
b = a
print(b)
a[0] = 5
print(b)
#輸出
[1, 2, 3]
[5, 2, 3]
[1, 2, 3]存放在內存中,一開始貼上標籤a,後來貼上標籤b,當list[1, 2, 3]中index0位置換爲5時,a,b同時發生變化。
2、深拷貝及淺拷貝
import copy
a = [1,2,3]
b = copy.copy(a)
c = copy.deepcopy(a)
a[0] = 5
print(b)
print(c)
#輸出
[1, 2, 3]
[1, 2, 3]
看到此處可能覺得深拷貝和淺拷貝,沒什麼不同。
import copy
a = [1,2,[3,4]]
b = copy.copy(a)
c = copy.deepcopy(a)
a[2][0] = 5
print(b)
print(c)
#輸出
[1, 2, [5, 4]]
[1, 2, [3, 4]]
與前面輸出結果對比會發現,copy對於一個複雜對象的子對象並不會完全複製,即:上面list裏嵌套的list,但是list中的單個對象會複製。而deepcopy的時候會將複雜對象的每一層複製一個單獨的個體出來。