1

是否有从生成器创建列表的快捷方式?我现在正在这样做:

list_form = [ item for item in some_generator ]

我需要在迭代之前对数据进行排序,因此不能直接在我的循环中使用生成器。

4

3 回答 3

6

是的,使用list()构造函数

list_form = list(some_generator)

list()接受任何可迭代并将其值添加到新创建的列表对象。

但是,如果你需要一个排序列表,你也可以sorted()直接使用:

sorted_form = sorted(some_generator)
于 2013-10-30T17:40:23.663 回答
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]
于 2013-10-30T17:41:22.060 回答
0

您可以简单地使用:

list_form = list(some_generator)
于 2013-10-30T17:42:28.410 回答