在Python中,“返回迭代器”是什么意思?

时间:2013-11-18 10:13:24

标签: python iterator networkx

我在Python中使用networkx作为图形方法和各种实用程序的功能接口。我想在图表中创建一个包含节点所有邻居的列表。

网页声明all_neighbors(图形,节点)返回迭代器。那是什么意思?如何在列表中保存邻居?

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

2 个答案:

答案 0 :(得分:5)

迭代器是Python中新的时髦爵士乐,(并不是真的很新)它们基本上是一个可以直接迭代的对象,例如。

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

因此,当某些东西说它返回一个迭代器时,它意味着可以直接迭代的东西。但不是清单。

要获取列表中迭代器的所有值,可以执行list(all_neighbors(graph, node))

但直接使用它远比简单得多。

Here是一些解释迭代器类型的文档。

答案 1 :(得分:1)

迭代器是一个逐个提供值的对象,并且只执行一次。您可以遍历迭代器,或者使用next()函数请求下一个值,但是您无法索引到迭代器(例如,请求序列中特定位置的元素)。

只需在迭代器上调用list(),即可将所有这些值收集到列表中:

list(all_neighbors(graph, node))