为列表的列表赋值
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]]]
我需要为列表的列表分配一个预定义维度。这是因为 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]]]