繁体   English   中英

从边缘列表创建邻接矩阵

[英]Create adjacency matrix from edge list

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

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

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

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

您需要更改以下行:

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

至:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM