python - 在 python 的二维列表中重新分配行/列表

标签 python list-comprehension

我试图在 python 中创建一个大小为 x + 1,y + 1 并具有一些初始值的二维列表。这些初始值是第一行包含数字 0 到 'x',第一列包含数字 0 到 'y'(包括在内)

假设 x 和 y 分别是 3 和 4。

所以我去了: 列表名称 = [范围(0, x + 1)] * (y + 1);

这给了我一个 2d 列表,它有 5 行,每行都是一个数字 0 到 3 的列表,每行(4 列)有 4 个索引:

[[0, 1, 2, 3], 
 [0, 1, 2, 3], 
 [0, 1, 2, 3], 
 [0, 1, 2, 3], 
 [0, 1, 2, 3]]

我知道此时我有一个二维数组,但每一行都是一个实例,因此如果我更改每一行中的任何值,所有行都会反射(reflect)该更改。因此,为了解决这个问题,我决定将每一行设置为一个新的唯一列表:

for row in listName:
    row = range(0, x + 1);

但是我注意到这个好像没有效果,我原来的list就算去了:

for row in listName:
    row = ["A", "B", "C", "D"];

赋值前后的打印显示“行”正在发生变化,但在循环之外,我在打印时得到了原始列表。尽管我找到了另一种方法来做我想做的事,但我似乎无法弄清楚为什么会这样。有什么想法吗?

最佳答案

切片分配以修改现有列表,而不是仅仅重新绑定(bind)名称。

row[:] = ...

此外,您构建的内容不正确。

listName = [range(0, x + 1) for z in range(y + 1)]

关于python - 在 python 的二维列表中重新分配行/列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8425720/

相关文章:

python - 来自方法的描述符 __get__

python - 如何在python中将带后缀的日期转换为另一种格式

python - 在Python pandas DataFrame中对具有接近日期时间的记录进行分组

python - 通过选择具有特定值的条目将 python 3 字典列表分成两部分的最有效方法

python - 如何编写列表理解来创建集合列表?

Python 字典 : changing the order of nesting

list-comprehension - 从Python中的嵌套列表中提取字典元素

python - 在列表理解中使用 'while' 循环

python - 如何使用 python 复制字符串中的字符(就地)?

python - 是否可以在 Windows 上部署 Python AWS Lambda?