引用是指儲存的值為物件的位址。在 python 語言中,乙個變數儲存的值除了基本型別儲存的是值外,其它都是引用,因此對於它們的使用就需要小心一些。下面舉個例子:
問題描述:已知乙個列表,求生成乙個新的列表,列表元素是原列表的複製
a=[1,2]這種做法其實並未真正生成乙個新的列表,b指向的仍然是a所指向的物件。這樣,如果對a或b的元素進行修改,a,b的值同時發生變化。b=a
解決的方法為:
a=[1,2]這樣修改a對b沒有影響。修改b對a沒有影響。b=a[:]
但 這種方法只適用於簡單列表,也就是列表中的元素都是基本型別,如果列表元素還存在列表的話,這種方法就不適用了。原因就是,象a[:]這種處理,只是將列 表元素的值生成乙個新的列表,如果列表元素也是乙個列表,如:a=[1,[2]],那麼這種複製對於元素[2]的處理只是複製[2]的引用,而並未生成 [2]的乙個新的列表複製。為了證明這一點,測試步驟如下:
>>> a=[1,[2]]可見,對a的修改影響到了b。如果解決這一問題,可以使用copy模組中的deepcopy函式。修改測試如下:>>> b=a[:]
>>> b
[1, [2]]
>>> a
[1, [2, 3]]
>>> b
[1, [2, 3]]
>>> 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...