Python淺拷貝與深拷貝用法例項

2022-09-28 20:39:42 字數 879 閱讀 8355

>>> person=['name',['s**ings',100]]

>>> hubby=person[:]

>>> wifey=list(person)

>>> [id(x) for x in person,hubby,wifeyurgge]

[3程式設計客棧074051788l程式設計客棧, 3074061740l, 3074061996l]

>>> [id(y) for x in person,hubby,wifey for y in x]

[3074319552l,3073979916l,307431程式設計客棧9552l,3073979916l,3074319552l,3073979916l]

>>> hubby[0]='joe'

>>> wifey[0]='jane'

(['joe',['s**ings',100]],[程式設計客棧'jane',['s**ings',100]],['name',['s**ings',100]])

>>> hubby[1][1]=70

>>> hubby,wifey,person

(['joe',['s**ings',70]],['jane',['s**ings',70]],['name',['s**ings',70]])

淺拷貝,創造了新的物件,但是它的物件引用確和被拷貝物件一致。

如果被拷貝物件的構成元素是不可變型別,則拷貝物件對這個元素的改變,實際上是創造乙個新的物件。

如果被拷貝物件的構成元素是可變型別,則拷貝物件對這個元素的改變,實際上是在原物件的記憶體空間上修改這個記憶體空間裡面的內容。

這樣,才有hubby[1][1]=70會導致wifey,person相應值的改變。

本文標題: python淺拷貝與深拷貝用法例項

本文位址:

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