Skip to main content
 首页 » 编程设计

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

2025年05月04日12qq78292959

我试图在 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)]