Python列表複製操作

2021-07-22 11:54:00 字數 996 閱讀 4583

引用是指儲存的值為物件的位址。在 python 語言中,乙個變數儲存的值除了基本型別儲存的是值外,其它都是引用,因此對於它們的使用就需要小心一些。下面舉個例子:

問題描述:已知乙個列表,求生成乙個新的列表,列表元素是原列表的複製

a=[1,2]

b=a

這種做法其實並未真正生成乙個新的列表,b指向的仍然是a所指向的物件。這樣,如果對a或b的元素進行修改,a,b的值同時發生變化。

解決的方法為:

a=[1,2]

b=a[:]

這樣修改a對b沒有影響。修改b對a沒有影響。

但 這種方法只適用於簡單列表,也就是列表中的元素都是基本型別,如果列表元素還存在列表的話,這種方法就不適用了。原因就是,象a[:]這種處理,只是將列 表元素的值生成乙個新的列表,如果列表元素也是乙個列表,如:a=[1,[2]],那麼這種複製對於元素[2]的處理只是複製[2]的引用,而並未生成 [2]的乙個新的列表複製。為了證明這一點,測試步驟如下:

>>> a=[1,[2]]

>>> b=a[:]

>>> b

[1, [2]]

>>> a

[1, [2, 3]]

>>> b

[1, [2, 3]]

可見,對a的修改影響到了b。如果解決這一問題,可以使用copy模組中的deepcopy函式。修改測試如下:

>>> import copy

>>> a=[1,[2]]

>>> b=copy.deepcopy(a)

>>> b

[1, [2]]

>>> a

[1, [2, 3]]

>>> b

[1, [2]]

有時候知道這一點是非常重要的,因為可能你的確需要乙個新的列表,並且對這個新的列表進行操作,同時不想影響原來的列表。

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...