从列表列表中提取所有数字

时间:2018-05-22 11:28:26

标签: python

是否有一个简单的函数可以从列表列表中提取所有数字。例如:

l = [ [1,2], [1, 5], [2] ] -> [1,2,1,5,2]

我想避免使用循环或列表推导。

3 个答案:

答案 0 :(得分:2)

  

我想避免使用循环或列表推导。

您可以将itertools.chain方法与Extended iterable unpacking运算符结合使用。

chain方法生成一个迭代器从第一个迭代中返回元素,直到它耗尽,然后进入下一个迭代,直到所有的迭代筋疲力尽。

import itertools
merged = list(itertools.chain(*l))

输出

[1,2,1,5,2]

另一种方法是使用reduce函数。

l = reduce(lambda x,y: x+y,l)

答案 1 :(得分:1)

使用list comprehension

>>> x = [j for i in l for j in i]
[1, 2, 1, 5, 2]

答案 2 :(得分:1)

使用itertools.chain

<强>演示:

import itertools
l = [ [1,2], [1, 5], [2] ] 
print(list(itertools.chain(*l))) #or print(list(itertools.chain.from_iterable(l)))

<强>输出:

[1, 2, 1, 5, 2]