2017-02-16 25 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

ИМО два 'for' заявления в одном списке понимание следует избегать. Попытайтесь использовать 'itertools.product', если сможете. – Elmex80s

0

Так как вам нужно только количество внешних краев

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

 Смежные вопросы

  • Нет связанных вопросов^_^