首页 > 解决方案 > 从边缘列表创建邻接矩阵

问题描述

您好,我正在尝试对从边缘列表生成邻接矩阵进行编码,但我无法让我的代码工作,我不明白为什么

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

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

我几乎可以肯定我忘记了一个小细节,但我无法弄清楚。如果有人可以我会很高兴。

标签: pythongraph

解决方案


您需要更改行:

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

至:

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

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


推荐阅读