Python隨筆 深淺拷貝

2022-09-02 20:57:15 字數 909 閱讀 5772

python中為了避免某些方法的***(拷貝後有時更改原有資料),故存在有深淺拷貝的存在

淺拷貝匯入copy方法集,使用copy_copy的方法進行

深拷貝一樣匯入copy方法集,使用copy_deepcopy方法進行

例項如下:

import copy

l1=l2=copy.copy(l1)

l3=copy.deepcopy(l1)

l1['k1']='like' #更改原有資料值

print(l1)

print(l2)

print(l3)

執行結果:

#資料更改

同樣的若是更改深層的value中列表的值:

import copy

l1=l2=copy.copy(l1)

l3=copy.deepcopy(l1)

l1['k3'][0]='like' #更改深層列表內值

print(l1)

print(l2)

print(l3)

執行結果:

#資料更改

#資料更改

以上結果可知:

1:深淺拷貝都是針對記憶體的(雖然沒有執行記憶體位置),佔不同記憶體

2:若原有資料僅修改一層,則深淺拷貝後資料均不更改

3:若原有資料中修改深層,則淺拷貝資料變化,深拷貝資料不變

4:可使用[:]對元素切片,但不可應用到字典型別

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