python 生成器转换

python generator conversion

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

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

这会引发 TypeError: 'int' object is not iterable,以下是 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)]

难道是这个?

生成器必须经过评估才能列出。您不能列出生成器本身。

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

如果我理解正确的话,这个:[(0, 1),(2,3)] 是一个包含两个元素的列表(每个元素都是一个包含两个元素的元组)但是 (0, 1) 是一个单独的元素,难道你需要是单个元素的列表,例如 [(0, 1)]?

我猜是:

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

会做你想做的。