python中為了避免某些方法的***(拷貝後有時更改原有資料),故存在有深淺拷貝的存在
淺拷貝匯入copy方法集,使用copy_copy的方法進行
深拷貝一樣匯入copy方法集,使用copy_deepcopy方法進行
例項如下:
import copyl1=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 方法,只能拷貝出列表裡表層的元素,而列表裡的列表卻無法拷貝,只能指向前乙個列表.修改拷貝出的列表裡列表裡的元素,原來的列表會發生改變....