更新 Python 中的二维数组值 - 更新整列错误?

Updating 2D Array Values in Python - Updating whole column wrong?

我正在尝试创建一个二维数组,并且一次只更新一个值,如下所示:

M = [[0]*3]*3
M[0][0] = 3
print(M)

返回以下内容:

[[3, 0 , 0], [3, 0, 0], [3, 0, 0]]

有人知道我做错了什么吗?

你的第一行所做的是创建一个内部长度为 3 的列表,并将它的三个引用添加到你的外部列表 M。如果你希望它们是独立的列表,你必须独立声明每个内部列表。

下面的不同之处在于它为您的内部长度为 3 的列表创建了 3 个单独的实例:

M = [[0]*3 for _ in range(3)]
M[0][0] = 3
print(M)

二维数组与第一个数组的地址相同。

M = [[0,0,0],[0,0,0],[0,0,0]]
M[0][0] = 3
print(M)

返回以下内容: [[3, 0, 0], [0, 0, 0], [0, 0, 0]]

仅供参考:问题与此相同: