我的清单是:
a = [[1,2], [23,51,6], ["Hi", "hello"]]
我想要输出:
a = [ 1,2,23 51,6, "Hi", "hello"]
答案 0 :(得分:4)
>>> 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个嵌套级别。