为列表的列表赋值

Assign values to a list of lists

我需要为列表的列表分配一个预定义维度。这是因为 for 循环中的代码正在使用对此类维度的 'existing' 数组的引用,它会抛出 'index 超出范围' 如果列表在进入循环之前未预加载,则会出错。

以下旨在执行此类任务的代码片段未产生我期望的结果。

a, b = 2, 3

matrix = [[[None]*2]*a]*b

for i in range(b):
    for j in range(a):
        print(i, j)
        matrix[i][j] = [i, j]
print(matrix)

我期望列表的二维列表的元素是一个二元列表。如打印语句输出如下:

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

列表列表应包含打印的对。

pre-dimension列表列表的正确方法如下:

a, b = 2, 3

matrix = [[[None for _ in range(2)]  
                 for _ in range(a)]  
                 for _ in range(b)] 

for i in range(b):
    for j in range(a):
        print(i, j)
        matrix[i][j] = [i, j]
print(matrix)

所以输出符合预期:

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