从边缘列表创建邻接矩阵

时间:2019-03-28 14:15:54

标签: python graph

你好,我正在尝试对边缘列表中邻接矩阵的生成进行编码,但是我无法使我的代码正常工作并且我不明白为什么

我已经尝试过反转索引并逐步运行它

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]]

我很确定我忘记了一个小细节,但我不知道。 如果有人可以我我会很高兴。

1 个答案:

答案 0 :(得分:2)

您需要更改以下行:

matrix = [[0]*len(graph)]*len(graph)

收件人:

matrix = [[0]*len(graph) for i in range(len(graph))]

这是因为以不同的方式创建数组时,它们以不同的方式存储它们,并且它们可以一次编辑多个值。尝试阅读this questionthis one