Python 字典 列表複製不能簡單的用

2021-10-04 22:57:40 字數 1344 閱讀 7173

參考文章:

一般將已有的值複製給新變數,都是用等號,但是對於字典、列表型別的資料最好不要這樣。

例如a = 3、b = a,b就能獲取到a的值,並且b發成變化,不會影響到a的值。但是當a是字典、列表的時候,b = a後,b發生變化也會影響到a。

a = 3

b = a

print(a) ---> 3

print(b) ---> 3

b = 5

print(a) ---> 3

print(b) ---> 5

b發生改變不會影響到a

********************************************

但是當a是字典、列表時

a =

b = a

print(a) --->

print(b) --->

b['msg'] = 'false'

print(a) --->

print(b) --->

b發生改變會影響到a

會發生這種情況和資料的儲存有關。

可變資料型別:當該資料型別對應變數的值發生變化時,對應記憶體位址並沒有開闢新的記憶體,而是在原來的記憶體值上進行修改。

列表、字典都是屬於可變資料型別

不可變資料型別:當該資料型別對應變數的值發生變化時,原來記憶體中的值不變,而是會開闢一塊新的記憶體,變數指向新的記憶體位址。

元祖、字串、整型、浮點型、布林型都是不可變資料型別

所以如果是要複製列表、字典的話,一般用copy.copy(),這樣即使b變更了也不會影響到原來的a

a = [code,msg,data]

b = copy.copy(a)

******************************

a =

b = copy.copy(b)

但是如果列表、字典是有多層的話,copy.copy()只會複製到第一層資料,需要用copy.deepcopy()才能把包括子列表、子字典在內的完全複製

a = [code,msg,data,[test1,test2,[3,4]]]

b = copy.deepcopy(a)

******************************

a = }

b = copy.deepcopy(b)

python 列表複製

我們經常需要根據已有列表來建立全新的列表,下面來介紹列表複製的工作原理。1 原理 要複製列表,首先需要建立乙個包含整個列表的切片,方法是同時省略起始和終止索引 即讓python建立乙個始於第乙個元素,終止於最後乙個元素的切片,便可複製整個切片。例 將 myfoods 複製給 friendfoods ...

python列表複製

我想實現乙個列表複製的操作,於是我就寫下了下面的 list 2 list 1 print list 2 print list 1 結果卻是這個樣子滴 banana berry banana berry 於是乎,我發現了乙個問題,list 2 list 1這樣寫並不是真正的列表複製,而是list 2 ...

python 複製列表內容 Python 複製列表

python 複製列表 定義乙個列表,並將該列表元素複製到另外乙個列表上。def clone test li1 li copy li1 return li copy li1 4,8,2,10,15,18 li2 clone test li1 print 原始列表 li1 print 複製後列表 li...