python中字典append到list後值會改變

2021-10-23 22:24:43 字數 1063 閱讀 8724

da=

dac=da

dct[

'test']=

2print

(dac)

print

(da)

輸出:22

改動的是dac,但是da也跟著改變。

字典da 是乙個object ,python 為提高效能,優化記憶體,dac=da並沒有真正的將該字典在記憶體中再次建立,只是指向了相同的object。如下:

da=l=[

]for i in

range(5

):da[

"name"]=i

print l

輸出:[, , , , ]

da=l=[

]for i in

range(5

):dac = dac.cpoy(

) dac[

"name"]=i

print l

輸出:[, , , , ]

a=

b=a.copy()b[

'q']=2

b['w'

]123

)print a

print b

a中』q』的值不會變化但是其列表中的值還是發生了改變

copy.copy 淺拷貝 只拷貝父物件,不會拷貝物件的內部的子物件。

copy.deepcopy 深拷貝 拷貝物件及其子物件

a=

b=a.copy()b[

'q']=2

b['w']=

[123

]print a

print b

直接賦值的話,則不會改變a中的結構

import copy

a=b=copy.deepcopy(a)

b['q']=

2b['w']=[

123]

print a

print b

使用deepcopy()深層次的copy

Python中append和extend的區別

網上有很多對這兩個函式的區別講解,但我覺得都講的不是很清楚,記憶不深刻。這樣解釋清楚且容易記住。1 2 3 4 5 music media compact disc 8 track tape long playing record new media audio disc super audio c...

Python中append和extend的區別

編者注 本文主要參考了 python核心程式設計 第二版 網上有很多對這兩個函式的區別講解,但我覺得都講的不是很清楚,記憶不深刻。這樣解釋清楚且容易記住。1 2 3 4 5 music media compact disc 8 track tape long playing record new m...

Python中append和extend的區別

網上有很多對這兩個函式的區別講解,但我覺得都講的不是很清楚,記憶不深刻。這樣解釋清楚且容易記住。music media compact disc 8 track tape long playing record new media audio disc super audio cd print mu...