更新 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]]
仅供参考:问题与此相同:
我正在尝试创建一个二维数组,并且一次只更新一个值,如下所示:
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]]
仅供参考:问题与此相同: