Достать значения из списка списков, используя list comprehension, а не цикл for
Дан список:
l1 = [[1, 2], [3, 4], [5, 6]]
нужно преобразовать его в список вида:
[1, 2, 3, 4, 5, 6]
Как это сделать с помощью цикла for, я знаю:
l2 = []
for i in l1:
for j in i:
l2.append(j)
Как сделать это с помщью list comprehension? Решение должно быть в одной строчке, т.е. к примеру:
l2 = [*решение с использованием list comprehension*]
Помогите пожалуйста, не могу никак допарить как сделать это не циклом, а через list comprehension...
Ответы (2 шт):
Автор решения: TigerTV.ru
→ Ссылка
Bариант c accumulate:
from itertools import accumulate
a = [[1,2], [2,5], [4,4]]
b = [i for i in accumulate(a)][-1]
print(b)
# [1, 2, 2, 5, 4, 4]
или c reduce
from functools import reduce
import operator
a = [[1,2], [2,5], [4,4]]
b = [i for i in reduce(lambda x,y: x+y, a)]
print(b)
b = [i for i in reduce(operator.add, a)]
print(b)
# [1, 2, 2, 5, 4, 4]