【问题标题】:Array-declaration issue in Python [duplicate]Python中的数组声明问题[重复]
【发布时间】: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]]

【问题讨论】:

  • 列表上的* 运算符创建对同一列表的引用列表。

标签: python arrays matrix


【解决方案1】:

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

【讨论】:

  • 谢谢。有解决办法吗?
  • @Enthuziast 请查看链接的副本。这个问题之前已经被问过+回答过
猜你喜欢
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
  • 2023-03-30
  • 2016-10-31
  • 2013-03-24
相关资源
最近更新 更多