Python裡面如何拷貝乙個物件

2022-07-16 20:51:12 字數 1624 閱讀 4338

1.賦值(=),就是建立了物件的乙個新的引用,修改其中任意乙個變數都會影響到另乙個。

in [168]: a

out[168]: [1, 2, 3]

in [169]: b=a

in [171]: a

out[171]: [1, 2, 3, 4]

in [172]: b

out[172]: [1, 2, 3, 4]

2.淺拷貝:建立乙個新的物件,但它包含的是對原始物件中包含項的引用(copy模組的copy()函式)

in [187]: import

copy#copy淺拷貝,沒有拷貝子物件,所以原始資料改變,子物件會改變

in [188]: a=[1,2,3,4,['

a','b'

]]in [189]: c=copy.copy(a)

in [191]: a

out[191]: [1, 2, 3, 4, ['

a', '

b'], 5]

in [192]: c

out[192]: [1, 2, 3, 4, ['

a', 'b'

]]c')

in [194]: a

out[194]: [1, 2, 3, 4, ['

a', '

b', '

c'], 5]

in [195]: c

out[195]: [1, 2, 3, 4, ['

a', '

b', '

c']]

3.深拷貝:建立乙個新的物件,並且遞迴的複製它所包含的物件(修改其中乙個,另外乙個不會改變)(copy模組的deep.deepcopy()函式)

in [196]: import

copy

in [197]: a=[1,2,3,4,['

a','b'

]]in [198]: c=copy.deepcopy(a)

in [200]: a

out[200]: [1, 2, 3, 4, ['

a', '

b'], 5]

in [201]: c

out[201]: [1, 2, 3, 4, ['

a', 'b'

]]c')

in [203]: a

out[203]: [1, 2, 3, 4, ['

a', '

b', '

c'], 5]

in [204]: c

out[204]: [1, 2, 3, 4, ['

a', '

b']]

綜上所述,淺copy和深copy:

copy淺拷貝(copy.copy()),沒有拷貝子物件,所以原始資料改變,子物件會改變
深copy的相同在於(copy.deepcopy()),包含物件裡面的自物件的拷貝,所以原始物件的改變不會造成深拷貝裡任何子元素的改變

它們的相同之處是,父物件都沒有改變!

Python裡面如何生成隨機數?

so many python中的random模組用於生成隨機數。下面介紹一下random模組中最常用的幾個函式。random.random 用於生成乙個0到1的隨機符點數 0 n 1.0 random.uniform的函式原型為 random.uniform a,b 用於生成乙個指定範圍內的隨機符點...

從乙個模板函式聊聊模板函式裡面如何獲得T的名字

寫了個小程式,遇到點問題.總結總結,學習學習 1 include2 include3 include4 5using namespace std 67 enum type 8 1314 template 15 void printtime type type 1627 28 t clock t 29...

乙個類如何防止被拷貝

在c 中,對於類我們如何防止被拷貝?首先,我們知道,在c 類中,我們是如何實現對類例項化物件的拷貝。是通過該類中的拷貝建構函式和賦值運算子的過載來實現的,那麼我們可以通過禁止在類外使用這兩種方法來達到防止該類被拷貝的目的。具體怎麼做 將拷貝建構函式和賦值運算子的過載,宣告為private 私有,類外...