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