Python不用于在列表中搜索,但不起作用

Python不用于在列表中搜索,但不起作用,python,list,search,Python,List,Search,我试图从给定的图中创建另一个具有互斥边的图 我从原始图中随机绘制节点,并检查它是否已经存在于原始图中。不在命令未按预期工作 我的代码如下 import networkx as nx import numpy as np import random G=nx.karate_club_graph() K=nx.Graph() sample_len=len(G.edges()) while(len(K.edges())<sample_len): n1=random.choice(G.no

我试图从给定的图中创建另一个具有互斥边的图

我从原始图中随机绘制节点,并检查它是否已经存在于原始图中。
不在
命令未按预期工作

我的代码如下

import networkx as nx
import numpy as np
import random
G=nx.karate_club_graph()
K=nx.Graph()
sample_len=len(G.edges())
while(len(K.edges())<sample_len):
    n1=random.choice(G.nodes())
    n2=random.choice(G.nodes())
    e=(n1,n2)
    if(e not in G.edges()):
        K.add_edge(*e)
i=0
for x in G.edges():
    if(x in K.edges()):
        i+=1
print i
将networkx导入为nx
将numpy作为np导入
随机输入
G=nx.空手道俱乐部图()
K=nx.Graph()
样本长度=长度(G.边()

while(len(K.edges())如果您需要差异,可以通过以下方式进行:

print (list(set(G.edges()) - set(K.edges())))
如果你只想要一个数字,加上len

print (len(list(set(G.edges()) - set(K.edges()))))
请让我知道您是否正试图存档此文件;)

使用
Graph.has_edge()


你期望得到什么结果?我正在检查两个图之间的公共边。答案应该是零。如果你给我发一个G=nx.karate_club_graph()K=nx.graph()的例子,我会尽力为你找到它,我不认为这很难,但我很长时间没有使用numpy库,只是阅读代码,我无法帮助抱歉!G=nx.karate_club_graph()是networkx中内置的图形数据集,K=nx.graph()是我初始化的空图形。如果检查e和x的实际值,它们的类型和格式是否相同?G.has_edge()正在工作。谢谢尽管如此,我还是无法理解
不在
中有什么问题。请参阅我上面的描述。我相信networkx可能以不同的方式存储边缘。例如,
g
包含一条边
(1,2)
。然后检查edge
(2,1)
是否存在。它不存在,您将其添加到
K
。稍后,在图形
K
中搜索边
(1,2)
。有可能
K
将边
(2,1)
存储为
(1,2)
,因此可以找到它。这一切都假设图是无向的。
import networkx as nx
import numpy as np
import random
G=nx.karate_club_graph()
K=nx.Graph()
sample_len=len(G.edges())
while(len(K.edges())<sample_len):
    n1=random.choice(G.nodes())
    n2=random.choice(G.nodes())
    e=(n1,n2)
    if(not G.has_edge(*e)):
        K.add_edge(*e)
i=0
for x in G.edges():
    if(K.has_edge(*x)):
        i+=1
print(i)
if((n1, n2) not in G.edges() and (n2, n1) not in G.edges()):
    K.add_edge(n1, n2)