我想为图形创建一个邻接矩阵,而不使用任何库。问题是图表的大小不是静态的,而是随着时间的推移而增加。所以我不能使用如下命令:
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]]