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)