2016-11-17 86 views
-2

我想編輯列表的列表中的元素,但它正在編輯多個元素。編輯在Python中列表的列表的列表

L1 = [[0,0] for count in range(2)] 
    L2 = [L1 for count in range(2)] 
    L2[0][0][0] = 5 
    print(L2) 

我期望是[[[5,0],[0,0],[0,0],[0,0]]]

但我得到的是[ [[5,0],[0,0]],[[5,0],[0,0]]]

看來我正在編輯原始列表。有人可以解釋如何編輯單個元素或設置嵌套列表,而這種效應不會發生。

非常感謝

+0

L2的每個元素都與L1的列表相同:「all(a是L2中的a的L1)」是True。 –

+0

您的'L2'在L2中持有多個對'L1' –

+0

的引用,這是對L1中列出的列表的引用。 Python列表是可變的。 – adarsh

回答

1

不要再使用該變量:

L2 = [[[0,0] for count in range(2)] for count in range(2)] 

然後內部[[0,0] for count in range(2)]將得到重新每次爲一個新的,單獨的列表。

+0

@MoinuddinQuadri鏈接的問題通常是關於已經相乘的列表,例如, '[[0] * 2] * 2'。 OP的情況有點不同。 –

+0

@MoinuddinQuadri那樣? –