如何为具有动态大小的二维数组元素赋值?

How to assign value to an element of 2d array with dynamic size?

我想在不使用任何库的情况下为图形创建邻接矩阵。问题是图表的大小不是静态的,它会随着时间的推移而增加。所以我不能使用这样的命令:

adj = [ [None for i in range(5)] for j in range(4) ]

例如,将 4 分配给元素 (1,1):

adj[1][1]=4

我创建了一个名为 adj 的空列表:

adj = []

现在每次向图中添加一个节点时,我都会向 adj 添加一个列表:

adj.append([])

如何为矩阵的特定元素赋值,就像在固定大小时对 q[1][1]=4 所做的那样?

您可以从任何默认大小开始,然后使用 extend 将元素添加到子列表,或添加新的子列表。

adj = [ [0 for i in range(2)] for j in range(2) ]
print(adj)
#[[0, 0], [0, 0]]
adj[0].extend([1, 1])
#[[0, 0, 1, 1], [0, 0]]
print(adj)
adj.extend([[0, 0, 0, 0, 0]])
print(adj)
#[[0, 0, 1, 1], [0, 0], [0, 0, 0, 0, 0]]

根据需要调整列表大小后,即可分配元素。

adj[0][0] = 2
adj[1][1] = 3
adj[2][2] = 4
print(adj)
#[[2, 0, 1, 1], [0, 3], [0, 0, 4, 0, 0]]