2016-09-25 67 views
2

我遇到了一個Python附加到列表中的問題。我實現的代碼爲:python如何追加列表工作?

a=[1,2] 
b=[3,4] 
a.append(b) 
b.append(5) 
print a 
print b 

我的Python追加的理解是,這段代碼的預期產出將是:

期望輸出

a=[1,2,[3,4]] 
b=[3,4,5] 

但實際產量是不同的東西。 實際輸出

a=[1,2,[3,4,5]] 
b=[3,4,5] 

我只是想知道爲什麼發生這種情況。

因爲我附名單ba,追加5b之前,名單a應該有[1,2,[3,4]]

回答

8

Python的名字是references,並追加到一個列表添加到同一對象的引用。

換句話說,您沒有追加b列表的副本。該a列表和名稱b共享一個參考的同一目標:

>>> a = [1, 2] 
>>> b = [3, 4] 
>>> a.append(b) 
>>> a[-1] is b # is tests if two references point to the same object 
True 
>>> id(a[-1]), id(b) # id produces a unique number per object 
(4595716320, 4595716320) 

如果預計到b列表的副本添加到a,明確地這樣做:

a.append(b[:]) 

a.append(list(b)) 

How to clone or copy a list?

+0

'Python名稱是引用,並且附加到列表將附加引用到同一個對象。' - 非常重要 –