python生成器转换

时间:2017-04-13 17:52:48

标签: python generator networkx

我想知道如何将只有一个元素的生成器转换为list。例如,如果f是一个带有一个元素的生成器,list(f)将引发"不可迭代" .how to solve这个问题?提前谢谢!

nx.adamic_adar_index(g, (0, 1))
list(nx.adamic_adar_index(g, (0, 1)))

这会引发TypeError:' int' object不可迭代,以下是OK

nx.adamic_adar_index(g, [(0, 1),(2,3)])
list(nx.adamic_adar_index(g, [(0, 1),(2,3)]))

结果是[(0,1,2.3878841007006875),(2,3,0.9282626109897467)]

2 个答案:

答案 0 :(得分:1)

如果我理解正确,那么:[(0, 1),(2,3)]是两个元素的列表(每个元素都是两个元素的元组),但(0, 1)是一个元素,可能是你需要成为一个元素单个元素的列表,例如[(0, 1)]

我猜是这样的:

list(nx.adamic_adar_index(g, [(0, 1)]))

会做你想做的事。

答案 1 :(得分:0)

这可能吗?

必须评估生成器是否已列出。您无法列出生成器本身。

>>> def g():
...     yield 1
...     
>>> list(g())
[1]
>>> list(g)
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
TypeError: 'function' object is not iterable