python深淺拷貝應用 python之深淺拷貝

2021-10-11 19:51:10 字數 856 閱讀 3259

對於 數字 和 字串 而言,賦值、淺拷貝和深拷貝無意義,因為其永遠指向同乙個記憶體位址。

print(id(n2))

對於字典、元組、列表而言,進行賦值、淺拷貝和深拷貝時,其記憶體位址的變化是不同的。

>>> n1 =

>>> n2 = n1

>>> print id(n1)

>>> print id(n2)

淺拷貝,在記憶體中只額外建立第一層資料

>>> n1 =

>>> n3 = copy.copy(n1)

>>> print id(n1)

>>> print id(n3)

>>> print id(n1['k3'])  ##檢視記憶體位址相同

>>> print id(n3['k3'])  ##檢視記憶體位址相同

深拷貝,在記憶體中將所有的資料重新建立乙份(排除最後一層,即:python內部對字串和數字的優化)

>>> import copy

>>> n1 =

>>> n4 = copy.deepcopy(n1)

>>> print id(n1)

>>> print id(n4)

>>> print id(n1['k3'])  ##檢視記憶體位址不同

>>> print id(n2['k3'])  ##檢視記憶體位址不同

深淺拷貝應用場景

監控場景:更改拷貝後的資料,而原來的資料保持不變!

指令碼如下:

#!/usr/bin/env python

#coding: utf8

import copy

#目的是更改資料後,原來的資料不變,而拷貝後的資料會隨時更新!

dic =

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