嵌套for networkx添加节点的循环

时间:2019-11-30 17:15:54

标签: python networkx

enter image description here

我正在使用networkx库来测试不同的算法,例如prims和kruksal。 根据所附图片,我有一个数据框。一位数字是节点,其余的是权重。例如,在第0行中,5连接到7,它具有3种不同的权重; 5连接到6,并且具有3种不同的权重。

要添加边缘,我编写了以下代码来计算一个权重:

G.add_edge(data1[0][0],data1[1][0],weight=data1[2+i][0])
G.add_edge(data1[0][0],data1[5][0],weight=data1[6+i][0])
G.add_edge(data1[0][0],data1[9][0],weight=data1[10+i][0])
G.add_edge(data1[0][0],data1[13][0],weight=data1[14+i][0])
G.add_edge(data1[0][0],data1[17][0],weight=data1[18+i][0])
G.add_edge(data1[0][0],data1[21][0],weight=data1[22+i][0])
G.add_edge(data1[0][0],data1[0][0],weight=data1[0+i][0])


G.add_edge(data1[0][1],data1[1][1],weight=data1[2+i][1])
G.add_edge(data1[0][1],data1[5][1],weight=data1[6+i][1])
G.add_edge(data1[0][1],data1[9][1],weight=data1[10+i][1])
G.add_edge(data1[0][1],data1[13][1],weight=data1[14+i][1])
G.add_edge(data1[0][1],data1[17][1],weight=data1[18+i][1])
G.add_edge(data1[0][1],data1[21][1],weight=data1[22+i][1])
#G.add_edge(data1[0][1],data1[25][1],weight=data1[26+i][1])


G.add_edge(data1[0][2],data1[1][2],weight=data1[2+i][2])
G.add_edge(data1[0][2],data1[5][2],weight=data1[6+i][2])
G.add_edge(data1[0][2],data1[9][2],weight=data1[10+i][2])
G.add_edge(data1[0][2],data1[13][2],weight=data1[14+i][2])
G.add_edge(data1[0][2],data1[17][2],weight=data1[18+i][2])
G.add_edge(data1[0][2],data1[21][2],weight=data1[22+i][2])
#G.add_edge(data1[0][2],data1[25][2],weight=data1[26+i][2])

G.add_edge(data1[0][3],data1[1][3],weight=data1[2+i][3])
G.add_edge(data1[0][3],data1[5][3],weight=data1[6+i][3])
G.add_edge(data1[0][3],data1[9][3],weight=data1[10+i][3])
G.add_edge(data1[0][3],data1[13][3],weight=data1[14+i][3])
G.add_edge(data1[0][3],data1[17][3],weight=data1[18+i][3])
G.add_edge(data1[0][3],data1[21][2],weight=data1[22+i][3])
#G.add_edge(data1[0][3],data1[25][2],weight=data1[26+i][3])

G.add_edge(data1[0][4],data1[1][4],weight=data1[2+i][4])
G.add_edge(data1[0][4],data1[5][4],weight=data1[6+i][4])
G.add_edge(data1[0][4],data1[9][4],weight=data1[10+i][4])
G.add_edge(data1[0][4],data1[13][4],weight=data1[14+i][4])
G.add_edge(data1[0][4],data1[17][3],weight=data1[18+i][4])
G.add_edge(data1[0][4],data1[21][2],weight=data1[22+i][4])
#G.add_edge(data1[0][4],data1[25][2],weight=data1[26+i][4])

G.add_edge(data1[0][5],data1[1][5],weight=data1[2+i][5])
G.add_edge(data1[0][5],data1[5][5],weight=data1[6+i][5])
G.add_edge(data1[0][5],data1[9][5],weight=data1[10+i][5])
G.add_edge(data1[0][5],data1[13][5],weight=data1[14+i][5])
G.add_edge(data1[0][5],data1[17][5],weight=data1[18+i][5])
G.add_edge(data1[0][5],data1[21][5],weight=data1[22+i][5])
G.add_edge(data1[0][5],data1[25][5],weight=data1[26+i][5])

G.add_edge(data1[0][6],data1[1][6],weight=data1[2+i][6])
G.add_edge(data1[0][6],data1[5][6],weight=data1[6+i][6])
G.add_edge(data1[0][6],data1[9][6],weight=data1[10+i][6])
G.add_edge(data1[0][6],data1[13][6],weight=data1[14+i][6])
G.add_edge(data1[0][6],data1[17][6],weight=data1[18+i][6])
G.add_edge(data1[0][6],data1[21][6],weight=data1[22+i][6])

G.add_edge(data1[0][7],data1[1][7],weight=data1[2+i][7])
G.add_edge(data1[0][7],data1[5][7],weight=data1[6+i][7])
G.add_edge(data1[0][7],data1[9][7],weight=data1[10+i][7])
G.add_edge(data1[0][7],data1[13][7],weight=data1[14+i][7])
G.add_edge(data1[0][7],data1[17][7],weight=data1[18+i][7])
G.add_edge(data1[0][7],data1[21][7],weight=data1[22+i][7])

G.add_edge(data1[0][8],data1[1][8],weight=data1[2+i][8])
G.add_edge(data1[0][8],data1[5][8],weight=data1[6+i][8])
G.add_edge(data1[0][8],data1[9][8],weight=data1[10+i][8])
G.add_edge(data1[0][8],data1[13][8],weight=data1[14+i][8])
G.add_edge(data1[0][8],data1[17][8],weight=data1[18+i][8])
G.add_edge(data1[0][8],data1[21][8],weight=data1[22+i][8])

G.add_edge(data1[0][9],data1[1][9],weigh=data1[2+i][9])
G.add_edge(data1[0][9],data1[5][9],weight=data1[6+i][9])
G.add_edge(data1[0][9],data1[9][9],weight=data1[10+i][9])
G.add_edge(data1[0][9],data1[13][9],weight=data1[14+i][9])
G.add_edge(data1[0][8],data1[17][9],weight=data1[18+i][9])
G.add_edge(data1[0][8],data1[21][9],weight=data1[22+i][9])

我现在正在寻找通过嵌套的for循环自动执行上述代码的方法。我写过:

g = 0
for i in range(0,10):
    for j in range(0,9):
        if data1[g+1][0] == None:
            break
        else:
            G.add_edge(data1[0][j],data1[1+g][j],weight=data1[2+i][j])
            g+=4

但是上面的代码给我一个错误。有人可以帮忙吗?

0 个答案:

没有答案