你好,我正在尝试对边缘列表中邻接矩阵的生成进行编码,但是我无法使我的代码正常工作并且我不明白为什么
我已经尝试过反转索引并逐步运行它
graph1=[[0,2,3,4],[1,2,4],[0,2,3,4],[1,2,3,4],[0,2,4]]
def Adjacency(graph):
index = 0 #Index of the sublist
matrix = [[0]*len(graph)]*len(graph)
print(matrix)
for sublist in graph:
for value in sublist:
print(value)
matrice[index][value] = 1
index+=1
print(matrix)
Adjacence(graphe1)
预期输出应为
[[1 0 1 1 1]
[0 1 1 0 1]
[1 0 1 1 1]
[0 1 1 1 1]
[1 0 1 0 1]]
但是我得到了
[[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1]]
我很确定我忘记了一个小细节,但我不知道。 如果有人可以我我会很高兴。
答案 0 :(得分:2)
您需要更改以下行:
matrix = [[0]*len(graph)]*len(graph)
收件人:
matrix = [[0]*len(graph) for i in range(len(graph))]
这是因为以不同的方式创建数组时,它们以不同的方式存储它们,并且它们可以一次编辑多个值。尝试阅读this question或this one