是否有从生成器创建列表的快捷方式?我现在正在这样做:
list_form = [ item for item in some_generator ]
我需要在迭代之前对数据进行排序,因此不能直接在我的循环中使用生成器。
答案 0 :(得分:6)
是的,请使用list()
constructor:
list_form = list(some_generator)
list()
接受任何迭代,并将其值添加到新创建的列表对象。
但是,如果您需要排序列表,您也可以直接使用sorted()
:
sorted_form = sorted(some_generator)
答案 1 :(得分:1)
您可以使用list()
:
l = list(generator)
令人眼花缭乱的证据(是的,我觉得很有戏剧性):
>>> from itertools import chain
>>> a = [['1', '2'], ['a']]
>>> gen = chain.from_iterable(a)
>>> gen
<itertools.chain object at 0x027EE3F0>
>>> list(gen)
['1', '2', 'a']
如果这太戏剧化(使用itertools
证明一个简单的观点):
>>> xrange(10)
xrange(10)
>>> list(xrange(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
答案 2 :(得分:0)
您可以简单地使用:
list_form = list(some_generator)