2017-02-16 42 views
-1

以下代码尝试计算某些子图结构具有多少个外部边。 substructure是节点列表,graph[node]返回node的邻居节点列表。用于Python中计数的更好的循环结构

external_edge = 0 
for node in substructure: 
    for neighbor in graph[node]: 
     if neighbor not in substructure: 
      external_edge += 1 

有没有更好的方法来实现这一目标?我尝试了列表理解,但external_edge+=1不是一个表达式。

回答

0

那么..它不是更有效率,但可能更pythonic(使用sum函数列表理解)。

external_age = sum(1 for node in substructure for neighbor in graph[node] if neighbor not in substructure) 
+0

IMO两个'在一个列表理解for'报表应避免的数量。如果可以的话,尝试使用'itertools.product'。 – Elmex80s

0

既然你只需要外部边缘

len(node for node in substructure for neighbor in graph[node] if neighbor not in substructure)