python深拷貝與淺拷貝以及賦值變化

2021-09-29 06:54:10 字數 783 閱讀 7896

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 對乙個全部是不可變型...