python生成器转换

python生成器转换,python,generator,networkx,Python,Generator,Networkx,我想知道如何将只有一个元素的生成器转换为list。例如,如果f是一个只有一个元素的生成器,list(f)将引发“not iterable”。如何解决此问题?提前感谢 nx.adamic_adar_index(g, (0, 1)) list(nx.adamic_adar_index(g, (0, 1))) 这将引发TypeError:“int”对象不可编辑,以下是确定的 nx.adamic_adar_index(g, [(0, 1),(2,3)]) list(nx.adamic_adar_ind

我想知道如何将只有一个元素的生成器转换为list。例如,如果f是一个只有一个元素的生成器,list(f)将引发“not iterable”。如何解决此问题?提前感谢

nx.adamic_adar_index(g, (0, 1))
list(nx.adamic_adar_index(g, (0, 1)))
这将引发TypeError:“int”对象不可编辑,以下是确定的

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)]

可能是这样吗

必须对发电机进行评估才能列出。您不能列出生成器本身

>>> 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
>>def g():
...     收益率1
...     
>>>列表(g())
[1]
>>>名单(g)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“函数”对象不可编辑

如果我理解正确,这:
[(0,1),(2,3)]
是两个元素的列表(每个元素都是两个元素的元组),但是
(0,1)
是单个元素,是否需要是单个元素的列表,如
[(0,1)]

我猜:

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

将执行您想要的操作。

请显示您遇到问题的代码,或从该代码创建的。您正在迭代元组列表。您可以发布完整的堆栈跟踪吗?在
nx.adamic\u adar\u索引(g,(0,1))
本身中,这不是错误吗?看起来像
nx.adamic\u adar\u索引
,不管它是什么,都需要一个元组列表。尝试
nx.adamic\u adar\u索引(g,[(0,1)])
。在您的第一个示例中,它将得到
0
,这是一个
int
,不可编辑,而不是一个
元组,元组应该是。看起来API需要一个序列。当您传递一个整数序列时,它将失败。