1、賦值變化
a = [1,2,3]
b = a
print(b)
a[0] = 5
print(b)
#輸出[1, 2, 3]
[5, 2, 3]
[1, 2, 3]存放在記憶體中,一開始貼上標籤a,後來貼上標籤b,當list[1, 2, 3]中index0位置換為5時,a,b同時發生變化。
2、深拷貝及淺拷貝
import copy
a = [1,2,3]
b = copy.copy(a)
c = copy.deepcopy(a)
a[0] = 5
print(b)
print(c)
#輸出[1, 2, 3]
[1, 2, 3]
看到此處可能覺得深拷貝和淺拷貝,沒什麼不同。
import copy
a = [1,2,[3,4]]
b = copy.copy(a)
c = copy.deepcopy(a)
a[2][0] = 5
print(b)
print(c)
#輸出[1, 2, [5, 4]]
[1, 2, [3, 4]]
與前面輸出結果對比會發現,copy對於乙個複雜物件的子物件並不會完全複製,即:上面list裡巢狀的list,但是list中的單個物件會複製。而deepcopy的時候會將複雜物件的每一層複製乙個單獨的個體出來。 Python 淺拷貝與深拷貝
淺拷貝 構造方法或切片 做的是淺拷貝 即拷貝了最外層容器,副本中的元素是原容器中元素的引用 在 python 中,通過乙個物件向另外乙個物件賦值,實際僅僅是賦值了物件的引用,而非建立乙個物件並賦值。那如何真正拷貝物件呢?我們看一下兩種不同的拷貝方式。先從乙個示例看起 anndy anndy age ...
Python 淺拷貝與深拷貝
以下例項是使用 copy 模組的 copy.copy 淺拷貝 和 copy.deepcopy usr bin python coding utf 8 import copy a 1,2,3,4,a b 原始物件 b a 賦值,傳物件的引用 c copy.copy a 物件拷貝,淺拷貝 d copy....
python 深拷貝與淺拷貝
當乙個變數 的時候,約定為 指向位址的過程 如果copy.copy 拷貝的是元組,那麼它不會進行淺拷貝,僅僅是指向 因為元組是不可變資料型別,那麼意味著資料一定不能修改,因此用copy.copy的 時候它會自動判斷,是指向。如果,用copy.copy copy.deepcopy 對乙個全部是不可變型...