我创建了一个像这样的列表列表
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 :(得分:4)
此操作:
[0] * 4
创建四个零的列表。这很好,每个都是在python中按值复制的,因为小于255的数字被有效地视为“原语”。
然而,
list_of_list = [[0, 0, 0, 0]]* 4
通过引用复制列表。发生在其中一个列表中的任何内容都会发生在所有这些列表中。