Python的深淺拷貝

2021-08-30 06:38:47 字數 681 閱讀 6620

淺拷貝——引用拷貝

list1 = [1, 2, 3]

list2 = list1

list2[0] = 3

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

print(list1, list2)

結果

46777544 46777544

[3, 2, 3] [3, 2, 3]

可見是引用相同記憶體位址,乙個修改後另乙個也會隨之改變。

深拷貝——記憶體拷貝

list3 = [1, 2, 3]

list4 = list3.copy()

list4[0] = 2

print(id(list3), id(list4))

print(list3, list4)

結果

46595208 46593864

[1, 2, 3] [2, 2, 3]

可見使用的不同記憶體位址,乙個修改後另乙個並不會改變。

ps:不可變物件型別,沒有被拷貝的說法,即便是用深拷貝,檢視id的話也是一樣的,如果對其重新賦值,也只是新建立乙個物件,替換掉舊的而已。

學了又忘,忘了再學!

python 深淺拷貝案例 python 深淺拷貝

深淺拷貝 對於 數字 和 字串 而言,賦值 淺拷貝和深拷貝無意義,因為其永遠指向同乙個記憶體位址 import copy a1 22255 a2 22255 print id a1 id a2 3428240 3428240 對於字典 元祖 列表 而言,進行賦值 淺拷貝和深拷貝時,其記憶體位址的變化...

python 深淺拷貝

建立乙個寬度為3,高度為4的陣列 mylist 0 3 4 0,0,0 0,0,0 0,0,0 0,0,0 但是當操作mylist 0 1 1時,發現整個第二列都被賦值,變成 0,1,0 0,1,0 0,1,0 0,1,0 list n n shallow copies of list concat...

python深淺拷貝

python 深淺拷貝 shallow copy 和 deep copy 對於乙個列表,列表裡面可以再放入乙個列表 1 若想複製這乙個列表,使用列表的普通的copy 方法,只能拷貝出列表裡表層的元素,而列表裡的列表卻無法拷貝,只能指向前乙個列表.修改拷貝出的列表裡列表裡的元素,原來的列表會發生改變....