Python 从边列表创建邻接矩阵

Python 从边列表创建邻接矩阵,python,graph,Python,Graph,您好,我正在尝试编码从边列表生成邻接矩阵,但我无法让我的代码正常工作,我不明白为什么 我试着反转索引并一步一步地运行它 graph1=[[0,2,3,4],[1,2,4],[0,2,3,4],[1,2,3,4],[0,2,4]] def邻接(图形): 索引=0#子列表的索引 矩阵=[[0]*len(图)]*len(图) 打印(矩阵) 对于图形中的子列表: 对于子列表中的值: 打印(值) 矩阵[索引][值]=1 指数+=1 打印(矩阵) 邻接(图1) 预期输出应为 [[1 0 1 1 1] [

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

我试着反转索引并一步一步地运行它

graph1=[[0,2,3,4],[1,2,4],[0,2,3,4],[1,2,3,4],[0,2,4]]
def邻接(图形):
索引=0#子列表的索引
矩阵=[[0]*len(图)]*len(图)
打印(矩阵)
对于图形中的子列表:
对于子列表中的值:
打印(值)
矩阵[索引][值]=1
指数+=1
打印(矩阵)
邻接(图1)
预期输出应为

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