python的深淺拷貝。

2021-09-28 00:24:53 字數 1301 閱讀 5823

python的淺拷貝copy

1、如果拷貝的是單層資料型別的話,當拷貝出的這個新物件發生變化時,原物件不會改變。

a =[1

,2,3

]b = a.copy(

)print

(a,b)10)

print

(a,b)

輸出結果是:

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

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

2、如果是拷貝的是多層資料型別的話,只能拷貝父物件,子物件拷貝的是它的記憶體位址,當修改拷貝出來的子物件的時候,原物件裡的子物件也會跟著修改。

a =[1

,2,3

,[4,

5,6]

]b = a.copy(

)print

(a,b)b[3

]10)print

(a,b)

輸出結果:

[1, 2, 3, [4, 5, 6]] [1, 2, 3, [4, 5, 6]]

[1, 2, 3, [4, 5, 6, 10]] [1, 2, 3, [4, 5, 6, 10]]

python深拷貝 copy.deepcopy()

1、深拷貝相當於拷貝出來了乙個新的物件,和原物件沒有關係,所已修改新物件原物件不會修改。

a =[1

,2,3

,[4,

5,6]

]b = copy.deepcopy(a)

print

(a,b)10)

print

(a,b)

輸出結果:

[1, 2, 3, [4, 5, 6]] [1, 2, 3, [4, 5, 6]]

[1, 2, 3, [4, 5, 6]] [1, 2, 3, [4, 5, 6], 10]

2、多層的資料結構也是一樣的,修改新物件的子物件的值,原物件的子物件的值不會修改。

a =[1

,2,3

,[4,

5,6]

]b = copy.deepcopy(a)

print

(a,b)b[3

]10)print

(a,b)

輸出結果:

[1, 2, 3, [4, 5, 6]] [1, 2, 3, [4, 5, 6]]

[1, 2, 3, [4, 5, 6]] [1, 2, 3, [4, 5, 6, 10]]

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 方法,只能拷貝出列表裡表層的元素,而列表裡的列表卻無法拷貝,只能指向前乙個列表.修改拷貝出的列表裡列表裡的元素,原來的列表會發生改變....