如何将列表列表转换为单个列表而不导入

时间:2014-02-05 06:11:07

标签: python list python-2.7

我的清单是:

a = [[1,2], [23,51,6], ["Hi", "hello"]]

我想要输出:

a = [ 1,2,23 51,6, "Hi", "hello"]

3 个答案:

答案 0 :(得分:4)

使用list comprehension

>>> a = [[1,2], [23,51,6], ["Hi", "hello"]]
>>> [x for xs in a for x in xs]
[1, 2, 23, 51, 6, 'Hi', 'hello']

答案 1 :(得分:1)

sum与两个参数一起使用,列表列表和要添加的空列表:

>>> sum(a, [])
[1, 2, 23, 51, 6, 'Hi', 'hello']

这是reduce的一个特例:

>>> reduce(list.__add__, a)
[1, 2, 23, 51, 6, 'Hi', 'hello']

事实上,我相信Guido从Python 3的内置函数中删除reduce的理由是,大多数人只是用它来添加事物列表(通常是数字)。添加sum功能后,reduce变得不那么重要了。 Python 3需要导入才能使用reduce

如果您不关心导入模块,则另一个选项是itertools.chain,它返回一个迭代器,迭代所有参数中的所有元素。您可以使用list构造函数将该迭代器转换为列表:

>>> import itertools
>>> list(itertools.chain(*a))
[1, 2, 23, 51, 6, 'Hi', 'hello']

答案 2 :(得分:0)

您可以使用itertools.chain.from_iterable方法:

>>> from itertools import chain
>>> a = [[1,2], [23,51,6], ["Hi", "hello"]]
>>> list(chain.from_iterable(a))
[1, 2, 23, 51, 6, 'Hi', 'hello']

请注意,这不适用于超过2个嵌套级别。