2016-05-13 255 views
0

我需要將列表附加到2D列表,以便我可以編輯添加的列表。我有這樣的事情:Python,將列表附加到另一個列表

n = 3 
a = [ 
    ['a', 2, 3], 
    ['b', 5, 6], 
    ['c', 8, 9] 
] 
b = [None for _ in range(n)] # [None] * n 
print b 
a.append(b) 
a[3][0] = 'e' 
print a 
a.append(b) 
a[4][0] = 'f' 
print a 

我得到的結果是:

[None, None, None] 
[['a', 2, 3], ['b', 5, 6], ['c', 8, 9], ['e', None, None]] 
[['a', 2, 3], ['b', 5, 6], ['c', 8, 9], ['f', None, None], ['f', None, None]] 

在第4行的變化ef,我不想要的。用[None] * 3我得到相同的結果。我如何防止這種情況發生?我檢查了how to create a fix size list in pythonpython empty list trick但它不起作用。

+0

您的配方可以改進:'B'不是一個空列表,因爲它的長度是3. –

+0

@ M.Massias完成 – zud

回答

4

b是「指向」相同的Python對象

你應該這樣做,而不是創造的b新副本:

a.append(list(b))