python列表的複製,扯一下淺拷貝與深拷貝的區別

2022-09-03 18:27:06 字數 1390 閱讀 5187

將乙個列表的資料複製到另乙個列表中。

使用列表[:],可以呼叫copy模組

import

copy

a = [21,22,23,24,['

a','

b','

c','

d'],25,26]

b = a #

直接賦值

c = a[:] #

淺拷貝d = copy.copy(a) #

淺拷貝e = copy.deepcopy(a) #

深拷貝#

看看深拷貝與淺拷貝的區別

#在a陣列的最尾處加乙個數

#在a陣列裡面的陣列最尾處加乙個數

print("

起始列表a------------>

",a)

print("

直接把a列表賦值給b---->

",b)

print("

直接淺拷貝a列表給c---->

",c)

print("

直接淺拷貝a列表給d---->

",d)

print("

直接深拷貝a列表給e---->

",e)

執行結果如下:

起始列表a------------> [21, 22, 23, 24, ['a', 'b', 'c', 'd', 66], 25, 26, 99]

直接把a列表賦值給b----> [21, 22, 23, 24, ['a', 'b', 'c', 'd', 66], 25, 26, 99]

直接淺拷貝a列表給c----> [21, 22, 23, 24, ['a', 'b', 'c', 'd', 66], 25, 26]

直接淺拷貝a列表給d----> [21, 22, 23, 24, ['a', 'b', 'c', 'd', 66], 25, 26]

直接深拷貝a列表給e----> [21, 22, 23, 24, ['a', 'b', 'c', 'd'], 25, 26]

通過以上的例子我們來分析一下這幾種複製列表的不同

1、直接賦值,其實就是預設淺拷貝傳遞物件的引用而已,原始列表改變,被賦值的b也會做相同的改變

2、淺拷貝,沒有拷貝子物件,所以原始資料改變,子物件也會改變

3、深拷貝,包含物件裡面的子物件的拷貝,所以原始物件的改變不會造成深拷貝裡任何子元素的改變

掰扯一下補碼2

上一次我們了解了補數,縮減基數補數以及其實現減法的原理。想要了解計算機是如何用加法運算來代替減法運算的。還需要繼續往下了解一下負數在計算機中是如何表示的。上一次介紹的用補數實現減法運算的第二種方法,存在當y大於x時,結果是錯誤的問題,例如123 456 123 543 1 667。這顯然不對。要解決...

複習一下 列表

列表的內建方法 l l.insert 0,88 在0這個位置上插入88值 l.l.extend x,y 把乙個列表中的多個值放進去 l 列表 l.remove 值 l.pop 索引 刪除索引位置的值 l.claer 列表清空 del lst 1 3 l.pop 刪除最後乙個數 lst.sort 排序...

python列表的複製

熟悉python的朋友都知道,與其說在python中給變數賦值,倒不如說是給值貼標籤。為什麼這麼說,因為當我使用諸如 a b 這種操作時,python並沒有為把b的複製給a,而是把a這個標籤貼在了b標籤貼在的變數上。那麼當我有乙個列表,我想修改它並產生乙個副本但是卻不改變原來的列表的時候,就必須去複...