【发布时间】:2020-01-07 15:23:04
【问题描述】:
我无法在 Python 中声明二维列表。下面是两个不同的矩阵; A 和 R。当更改单个单元格的内容时,我在 R 矩阵中是成功的,但在 A 矩阵中却没有成功,因为值输入会影响整个列而不仅仅是单个单元格。 为什么会这样?我更喜欢声明矩阵的 A 风格。
n=6
A = [[0]*n]*n
R=[[0,0,0,0,0,0], [0,0,0,0,0,0], [0,0,0,0,0,0], [0,0,0,0,0,0], [0,0,0,0,0,0], [0,0,0,0,0,0]]
R[1][1]=5
A[1][1]=5
print(R)
print(A)
这两个操作的输出是:
[[0, 0, 0, 0, 0, 0], [0, 5, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]
[[0, 5, 0, 0, 0, 0], [0, 5, 0, 0, 0, 0], [0, 5, 0, 0, 0, 0], [0, 5, 0, 0, 0, 0], [0, 5, 0, 0, 0, 0], [0, 5, 0, 0, 0, 0]]
【问题讨论】:
-
列表上的
*运算符创建对同一列表的引用列表。