Python networkx边返回错误的索引

Python networkx边返回错误的索引,python,networkx,graph-theory,Python,Networkx,Graph Theory,我从几天开始使用python和networkx。 我有一个无方向的图,我尝试迭代一个节点的边 我曾经 print (G.edges) for i in G.nodes: print( G.edges(i)) 获得 [(0, 1), (0, 2), (0, 4), (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)] [(0, 1), (0, 2), (0, 4)] [(1, 0), (1, 2), (1, 3), (1, 4)] [(

我从几天开始使用python和networkx。 我有一个无方向的图,我尝试迭代一个节点的边

我曾经

print (G.edges)

for i in G.nodes:

    print( G.edges(i))
获得

[(0, 1), (0, 2), (0, 4), (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]

[(0, 1), (0, 2), (0, 4)]

[(1, 0), (1, 2), (1, 3), (1, 4)]

[(2, 0), (2, 1), (2, 3), (2, 4)]

[(3, 1), (3, 2), (3, 4)]

[(4, 0), (4, 1), (4, 2), (4, 3)]
G.edges()
提供的边在某些情况下(例如,对于i=1,我有边(1,0),但它不存在!!我只有(0,1)。由于图形是无方向的,它是同一条边,但如果我尝试将它用作边向量的索引,它就不起作用

我试过了

for i in G. nodes
...   do something with .... x[e] for e in G.edges(i)

您可以将
G.edges()
的列表扩展为双向

a=[e代表G.edges中的e]
提供边的列表
[(0,1)、(0,2)、(0,4)、(1,2)、(1,3)、(1,4)、(2,3)、(2,4)、(3,4)]
,它删除了无向边的重复表示,而所有节点上的邻居报告自然会报告两个方向,根据

您可以:

1)通过按相反顺序添加边表示来复制列表

a=[e表示G.edges中的e]+[(y,x)表示G.edges中的(x,y)]
这给了你

[(0, 1), (0, 2), (0, 4), (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4), (1, 0), (2, 0), (4, 0), (2, 1), (3, 1), (4, 1), (3, 2), (4, 2), (4, 3)]
2)使用列表理解从
G.edges(i)
中获取边,就像您所做的那样:

b=[e代表G中的i.节点代表G中的e.边(i)]
输出:

[(0, 1), (0, 2), (0, 4), (1, 0), (1, 2), (1, 3), (1, 4), (2, 0), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 0), (4, 1), (4, 2), (4, 3)]

你的问题到底是什么
G.edges
删除无向边的重复表示,而根据,所有节点上的邻居报告自然会报告两个方向。我的图没有定向。我将G.edges()返回的边存储在一个变量数组中(我正在编写一个数学模型)。使用G.edges(node)检索边我有两条边,其中两个节点的顺序与G.edges()相反,因此它们不能用作变量的索引。示例:G.edges()=[(0,1)、(0,2)]和G.edges(1)返回(1,0)!是否可以像G.edges()列表中那样使用两个节点(索引)的边?