2012-10-07 55 views
0

可能重複:
Unexpected feature in a Python list of lists
How to initialize a two-dimensional array in Python?追加嵌套列表 - 是否應該這樣工作?

我想創造n大小的嵌套列表,然後逐一根據標準的項目追加到它。

爲此,我這樣寫以下(n大小= 4)

a = [[]] * 4 # which creates on display a = [ [] , [] , [] , [] ] 

現在我做這樣的事情a[1].append(3)這給了我輸出[[3], [3], [3], [3]]

我在做什麼錯在這裏?不應該只用第3個值更新第2個列表(a [1])?

回答

3

你在做什麼創建一個列表,其中4個引用到同一個子列表。

您需要改爲像a = [[] for _ in xrange(4)]那樣做。

0

是的,它應該以這種方式工作,即使它經常令人驚訝。它相當於這個

b=[] 
a=[b]*4 

然後,當你說a[1].append(3),這就像說b.append(3)。並且由於a包含四個對同一列表的引用,因此當您打印a時,您會看到它出現四次。