2015-10-15 130 views
1

的一排我創建的列表清單這樣在列表列表中的值分配給元素分配給價值

In [1]: list_of_list = [ [0] * 4]* 4 
In [2]: list_of_list 

Out[2]: [[0, 0, 0, 0], 
     [0, 0, 0, 0], 
     [0, 0, 0, 0], 
     [0, 0, 0, 0],] 

當我在這個list_of_list值分配給該元素是它分配給一列元素。

In [3]: list_of_list[2][3] 
Out[3]: 0 

In [4]: list_of_list[2][3] = 1 

In [5]: list_of_list 
Out[5]: [[0, 0, 0, 1], 
     [0, 0, 0, 1], 
     [0, 0, 0, 1], 
     [0, 0, 0, 1],] 

爲什麼python的行爲如此呢?

謝謝。

+0

使用您的問題頂部的鏈接找到重複 – matli

+0

我明白了。謝謝。 –

回答

4

此操作:

[0] * 4 

創建四個零列表。這很好,每個都被python中的值複製,因爲小於255的數字被有效地視爲「基元」。

然而,

list_of_list = [[0, 0, 0, 0]]* 4 

副本參照列表。任何發生在這些列表中的事情都發生在所有這些列表中。