首页 > 解决方案 > Python中的数组声明问题

问题描述

我无法在 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]]

标签: pythonarraysmatrix

解决方案


A = [[0]*n]*n 创建同一个列表的多个副本。这就是为什么改变一个会影响其他一个


推荐阅读