如何更改矩阵中的单个单元格?

How to change individual cells in a matrix?

我试图理解为什么 Python 中存在以下行为。

如果我做两个等价矩阵

matrix1 = [[False] * 3] * 3
matrix2 = [[False for x in range(3)] for y in range(3)]

然后我尝试让左上角的单元格等于True

matrix1[0][0] = True
matrix2[0][0] = True

每个数组都以不同的方式进行了更改。

matrix1 is now [[True, False, False], [True, False, False], [True, False, False]]
matrix2 is now [[True, False, False], [False, False, False], [False, False, False]]

matrix2 是我所期望的行为。为什么 matrix1 表现不同?

当您使用 []*3 时,每个元素都指向同一个对象,因此改变一个会改变另一个。您可以将其视为一种将列表中的元素相乘的方法。

当您使用 [for x in range(3)] 时,它会创建三个单独的项目。更改一项不会影响其他项。