2017-04-13 137 views
0

我想知道如何将只有一个元素的生成器转换为列表。例如,如果f是一个元素的生成器,列表(f)将引发“不可迭代”。如何解决此问题?提前致谢!蟒蛇生成器转换

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

这将提高类型错误: 'INT' 对象不是可迭代,下面是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

请显示您遇到问题的代码或从该代码创建的[MCVE](http://stackoverflow.com/help/mcve)。 –

+0

您正在迭代元组列表。 – Pieter21

+1

你能发布完整的堆栈跟踪吗? 'nx.adamic_adar_index(g,(0,1))'本身没有错误吗? – tdelaney

回答

1

如果我理解正确的话,这个:[(0, 1),(2,3)]是两个元素(各为两个元素的元组),但(0, 1)的列表是一个单一的元素,那也许是因为你需要一个单一的列表元素,如[(0, 1)]

我猜:

list(nx.adamic_adar_index(g, [(0, 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