我有下面的代码,它获取一个图和一组要排除的id,并返回没有出现在要排除的节点列表中的节点的id。你知道吗
我有两个版本的代码。一个得到两个列表,另一个得到一个列表。我使用itertools.chain
来组合这两个列表。你知道吗
from itertools import chain
def GrapMinusNodes(Graph,nodes_to_exclude1,nodes_to_exclude2):
return (item.GetId() for item in Graph.Nodes() if item.GetId() not in chain(nodes_to_exclude1,nodes_to_exclude2))
我有一个:
def GrapMinusNodes(Graph,nodes_to_exclude1,nodes_to_exclude2):
return (item.GetId() for item in Graph.Nodes() if item.GetId() not in nodes_to_exclude1)
第一种方法比第二种方法慢20%。 原因是什么? 有没有办法让这段代码运行得更快?你知道吗
为什么在这里使用
chain
?对于iterable,检查成员身份是O(n)
,必须为要检查的每个项重新创建该iterable。相反,可以预先创建一个set
并使用它测试成员身份:相关问题 更多 >
编程相关推荐