2013-06-20 122 views
7

我遇到了我的程序中的問題,我不知道我在做什麼錯。要開始,我創建了一個空列表。例如:蟒蛇將值附加到子列表

>>> Lists = [[]]*12 

這給:

>>> Lists 
[[], [], [], [], [], [], [], [], [], [], [], []] 

然而,試圖將值追加到一個單獨的子表時,增加了價值給所有的子表。例如:

>>> Lists[2].append(1) 

給出:

>>> Lists 
[[1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1]] 

有沒有辦法將追加到只是一個單一的子列表,這樣的結果會是這樣的:

>>> Lists 
    [[], [], [1], [], [], [], [], [], [], [], [], []] 
+0

你可能想看看[這](http://www.laurentluce.com/posts/python-list-implementation/)理解爲什麼它追加到所有的子表。如果你看第二個數字,你可以將列表中的12個元素看作指向同一個對象'[]'。現在,當你向'Lists [2]'追加'1'時,它會附加到共享列表對象。因此,'Lists'中的所有元素似乎都附加了1。 – Nik

回答

18

List對象是可變的,所以你實際上正在列出12個引用一個列表。使用列表理解,使12名不同的列表:

Lists = [[] for i in range(12)] 

對不起,我找不到這個確切的問題

1

我碰到了同樣的問題,而試圖解決的副本原件拓撲排序問題。

試試這個:

Lists[2] = Lists[2]+[1]