2013-11-18 3 views
1

Я использую networkx в Python как функциональный интерфейс для графических методов и различных утилит. Я хочу создать список со всеми соседями узла в графе.Что означает «возвращает итератор» в python?

На веб-странице указано, что all_neighbors (graph, node) возвращает итератор. Что это значит? Как сохранить соседей в списке?

http://networkx.github.io/documentation/latest/reference/generated/networkx.classes.function.all_neighbors.html#networkx.classes.function.all_neighbors

+0

см. Http://stackoverflow.com/q/9884132/989121 – georg

ответ

5

итераторов нового фанки джаз в Python, (ну не совсем новый), они в основном это объект, который может перебираться непосредственно, например

for i in all_neighbors(graph, node): 
    print i 

Так что, когда что-то говорит, что он возвращает итератор, это означает что-то, что может быть непосредственно повторено. Но это не список.

Чтобы получить все значения итератора в списке, вы можете сделать list(all_neighbors(graph, node))

Но просто использовать его непосредственно далеко гораздо проще.

Here - это документация, объясняющая типы итераторов.

+3

+1 для «Итераторы - новый фанковый джаз в Python, (ну не совсем новый)» – Yavar

1

Итератор это объект, который обеспечивает значения по одному, и делает это только один раз. Вы можете перебрать итератор или запросить следующее значение с помощью функции next(), но вы не можете индексировать в итератор (например, запрашивать элементы в определенных местах в последовательности).

Вы можете собрать все эти значения в список, просто вызвав list() итератора:

list(all_neighbors(graph, node)) 
Смежные вопросы