问题是 G.edges() 只有每个边缘一次。因为它是一个无向图,它可以是 (1,2) 或者作为 (2,1) (你不希望两者都出现---你可能正在迭代并第一次删除边缘)。你不能确定它将采取什么样的顺序,因为它来自一个python dict,它 没有可预测的顺序 。你可以做到 (1,2) in G.edges() or (2,1) in G.edges() ,但你真的不想这样做 - 创建边缘列表效率低下。
G.edges()
(1,2)
(2,1)
(1,2) in G.edges() or (2,1) in G.edges()
所以测试应该使用 G.has_edge(1,2) 它正确地检查它(并且更有效)。
G.has_edge(1,2)
只是为了表明不同python实现缺乏可预测性,这就是我得到的
在[3]中:G = nx.Graph() 在[4]中:G.add_edge(1,2) 在[5]中:G.edges() 出[5]:[(1,2)] 在[6]:G.edges()中的(1,2) 出[6]:是的 在[7]中:G.add_edge(4,3) 在[8]中:G.edges() 出[8]:[(1,2),(3,4)] 在[9]中:( 4,3)在G.edges() 出[9]:错
在[3]中:G = nx.Graph()
在[4]中:G.add_edge(1,2)
在[5]中:G.edges()
出[5]:[(1,2)]
在[6]:G.edges()中的(1,2)
出[6]:是的
在[7]中:G.add_edge(4,3)
在[8]中:G.edges()
出[8]:[(1,2),(3,4)]
在[9]中:( 4,3)在G.edges()
出[9]:错