Python之深拷貝和淺拷貝

2021-08-23 14:03:03 字數 1392 閱讀 2489

"""

***賦值, 深拷貝和淺拷貝的區別?(python中如何拷貝乙個物件?)

- 直接賦值(li1 = li): 只傳遞物件的引用, li1指向物件li的記憶體位址空間,

因此, 原有列表li改變, 被賦值的li1也會做相應的改變.

- 深拷貝(import copy, eg: li3=copy.deepcopy(li)), li和li3的記憶體位址不同,

包含子物件的拷貝, 所以原始物件改變並不會造成深拷貝裡面任何子項的改變.

*** 當深拷貝和淺拷貝, 針對的物件全部是不可變資料型別時, 兩者效果相同;

*** 當深拷貝和淺拷貝, 針對的物件包含是可變資料型別時, 兩者才有上述區別;

# 列表裡面巢狀列表

140136482447944     #淺拷貝,子物件記憶體位址相同

id(li4[0])

140136361969928     #深拷貝,子物件記憶體位址不同

# 所有的數值型別和布林型別, str是不可變資料型別,

# list是可變資料型別;

# 淺拷貝的實現:

#   - li.copy()

#   - li[:]

#   - copy.copy(li)

# 實現深拷貝:

#   - copy.deepcopy(li)

python之深拷貝 淺拷貝

來自於牛客網,刷題時候遇到的 題目 下面 執行後,a b c d四個變數的值,描述錯誤的是?import copy a 1,2,3,4,a b b a c copy.copy a d copy.deepcopy a 5 選項 a 1,2,3,4,a b c 5 b 1,2,3,4,a b c 5 c...

python之深拷貝 淺拷貝

如上圖,變數a和b的記憶體位址是相同的,說明python中的賦值可以看作是引用,變數指向了同乙個記憶體空間 copy模組中的deepcopy就展示了深拷貝,c就是通過a的深拷貝 測試一下,追加a列表,c並沒有發生變化,c指向的是乙個新的記憶體空間 這段 是要說明copy模組下的copy是淺拷貝,但是...

python 深拷貝 Python深拷貝和淺拷貝!

在python中,物件賦值實際上是物件的引用。當建立乙個物件,然後把它賦給另乙個變數的時候,python並沒有拷貝這個物件,而只是拷貝了這個物件的引用 一般有三種方法,alist 1,2,3,a b 1 直接賦值 b alist,預設淺拷貝傳遞物件的引用而已,原始列表改變,被賦值的b也會做相同的改變...