python - 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]]
解决方案
A = [[0]*n]*n 创建同一个列表的多个副本。这就是为什么改变一个会影响其他一个
推荐阅读
- python - 使用 tensorflow.map_fn 创建自定义层时出现 TypeError
- javascript - 使用map函数创建对象,currentValue作为对象键
- python - 不带双括号的数组索引输出
- android - Android:Twitter sdk:无法导入任何 twitter 类
- angular - 字体真棒图标不显示角度6
- ansible - 基于 vars_prompt 的剧本的条件输入 - Ansible
- flutter - 如何将二进制 pdf 数据保存到移动存储中或使用颤振保存到文件中
- reactjs - React Typescript 面临酶问题
- pycharm - 如何在没有整个 Anaconda 包(Spyder、Juyter 等...)的情况下只安装 Conda Python 解释器?
- azure - 通过电子邮件获取资源组使用情况的每月 Azure 计费发票