python is和 區別 深拷貝和淺拷貝

2021-08-23 14:01:58 字數 922 閱讀 5973

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

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

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

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

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

# 列表裡面巢狀列表

li = [['a', 'b'], 1,2]

li2 = li.copy()

li[['a', 'b'], 1, 2]

li2[['a', 'b'], 1, 2]

id(li[0])

140198666473736

id(li2[0])

140198666473736

import copy

li[['a', 'b'], 1, 2]

li2[['a', 'b'], 1, 2]

li3 = copy.copy(li)

li4 = copy.deepcopy(li)

li[['a', 'b'], 1, 2]

li4[['a', 'b'], 1, 2]

id(li[0])

140198666473736

id(li4[0])

140198658766920

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

# list是可變資料型別;

# 淺拷貝的實現:

#   - li.copy()

#   - li[:]

#   - copy.copy(li)

# 實現深拷貝:

#   - copy.deepcopy(li)

Python is和 及深拷貝和淺拷貝的區別

一.is和 的區別 用於判斷引用變數的值是否相等。只判斷值和資料型別 is 用於判斷兩個變數引用物件是否為同乙個,就是所引用的物件的記憶體位址是否一致 a 1 b 1 a b a b的變數型別不同,則判斷為假 false a 1 b a 將a賦值給b,此是b的值及型別與a相同,並且引用的物件為同乙個...

Python is和 的區別,深淺拷貝的區別

id 表示在記憶體中儲存的位置 type表示變數的型別 value表示變數的值 is 是表示兩個變數是否指向的是同一塊記憶體空間,即id,type,value都相等 是表示兩個變數值是否相等 即type和value相等 即 如果 is 成立,則 一定成立,反之,不一定。li 1,2,3 li 1,2...

python is和 的區別

在 python 中會用到物件之間比較,可以用 也可以用 is 但是它們的區別是什麼呢?is 比較的是兩個例項物件是不是完全相同,它們是不是同乙個物件,占用的記憶體位址是否相同。萊布尼茨說過 世界上沒有兩片完全相同的葉子 這個is正是這樣的比較,比較是不是同一片葉子 即比較的id是否相同,這id類似...