python - Python:列表列表的基本操作
问题描述
我承认我对列表的行为方式感到困惑,并且我编写了许多示例程序并倾注了文档问题并且无法弄清楚。
我正在考虑将多达 40 种选择中的四种选择组合成独特的组合(从数学的角度来看)。在运行时,我读入了一个选项列表(每次运行都会更改),并且需要构建一个 X 乘 X 的表(使用列表列表),其中 X = 选项数。我需要实时构建我的列表列表,以初始值 0 加载每个列表中的每个位置,然后继续。
我首先构建一个长度合适的空白列表并用 0 加载它。然后我根据需要多次将该空白列表附加到我的分数列表中。所以现在理论上我有一个列表,其中包含 28 个列表的出现,该列表在 28 个位置中的每个位置都有一个 0。
如果我尝试在大列表(例如位置 [2] [2])中的一个位置(排序为一列,一行)更改一个值,为什么位置 2 在列表的每个成员中都会发生变化,那么会发生什么。关于列表的行为方式,我缺少一些非常基本的东西。
谢谢你的帮助。
blank = []
counter = 0
while counter < 28:
blank.insert(counter,0)
counter +=1
print("Blank = ", blank)
scores = []
counter = 0
while counter < 28:
scores.append(blank)
counter +=1
print("Array built", scores)
scores[2][2] = 2
print("array changed", scores)one position in one row
解决方案
@Haytam 和@AnantKumar 的答案对于为什么所有列表都被更改是正确的;所有列表都具有相同的引用,这可以通过id(blank)
在每次迭代中运行来看出。
像这样的东西怎么样:
import numpy as np
scores = np.repeat(0, 28**2).reshape(28, 28)
这将创建一个ndarray
由 28 个数组组成的数组,所有数组都用 28 个零填充,其中一个特定的值可以更改,就像您尝试做的那样。
确认:
可以通过以下方式验证更改:
scores[2][2] = 2
sum(sum(scores))
>>> 2
推荐阅读
- javascript - 如何添加自定义事件侦听器并获取应用它的所有元素?
- jquery - 如何从 Action 方法获取 json 数据并使用 jQuery 将其放置在选择列表中
- arrays - 来自一维数组的唯一值,无需迭代
- hash - 在 Raku 中对哈希键和值使用任何或不使用
- c# - 流式传输大型 ISO 文件 ASP.Net Core
- excel - Excel 公式中的嵌套错误 - 更改为 If
- php - 如何获得 JSON 输出的第二个 json 块?
- r - 如何将一系列 ID 转换为对应的 URL?
- java - Eclipse Scout 的 JavaParser 和 SymbolSolver
- javascript - 使用javascript全局更改h1标签的颜色