更改列表python列表中的值。为什么它会改变整行?

时间:2017-12-28 01:24:29

标签: python list

为什么会这样?

In [1]: a=[[0]*2]*2
In [2]: a
Out[2]: [[0, 0], [0, 0]]
In [3]: a[0][0]=1
In [4]: a
Out[4]: [[1, 0], [1, 0]]

不应该吗?

In [4]: a
Out[4]: [[1, 0], [0, 0]]

1 个答案:

答案 0 :(得分:0)

Create List of Single Item Repeated n Times in Python

正如上面的链接所解释的,因为您使用了*运算符,所以主列表中的所有列表都引用相同的列表。因此,当你改变一个时,你真的在​​同时改变其他的。试试这个:

a = [[0, 0], [0, 0]]
a[0][0] = 1

这样您就可以在a中明确定义两个不同的子列表。