我想知道如何将只有一个元素的生成器转换为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)]
答案 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