Python Networkx:如何删除单向边?

Python Networkx:如何删除单向边?,python,networkx,Python,Networkx,假设我在[(1,2)、(2,1)、(1,3)]之间有边,我如何删除(1,3),因为它不像1和2之间的边那样是双向的?我假设这是一个有向图。在这种情况下,首先找到要删除的边。然后移除它们 to_remove = [(v,u) for v,u in G.edges() if not G.has_edge(u,v)] G.remove_edges_from(to_remove) 要删除的列表在G中有所有那些边,而G没有相反的边(这是一个列表理解) 这一条稍微长一点,但不要直接修改边 import n

假设我在
[(1,2)、(2,1)、(1,3)]
之间有边,我如何删除
(1,3)
,因为它不像1和2之间的边那样是双向的?

我假设这是一个有向图。在这种情况下,首先找到要删除的边。然后移除它们

to_remove = [(v,u) for v,u in G.edges() if not G.has_edge(u,v)]
G.remove_edges_from(to_remove)

要删除的列表
G
中有所有那些边,而
G
没有相反的边(这是一个列表理解)

这一条稍微长一点,但不要直接修改边

import networkx as nx

# create the graph
G = nx.DiGraph()   
G.add_edges_from([(1,2),(2,1),(1,3),(4,1),(1,5),(1,6),(5,1)])

H = nx.difference(G.to_undirected().to_directed(), G) # get the uni-directional edges
G = nx.difference(G, H.to_undirected())               # get the difference graph
G.edges()
# [(1, 2), (1, 5), (2, 1), (5, 1)]