networkx add节点的嵌套for循环

2024-09-30 16:37:29 发布

您现在位置:Python中文网/ 问答频道 /正文

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

但是上面的代码给了我一个错误。有人能帮忙吗


Tags: 数据代码innetworkx算法addforrange