Достать значения из списка списков, используя 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 шт):

Автор решения: gil9red

Вот так:

l2 = [j for i in l1 for j in i]
print(l2)
→ Ссылка
Автор решения: 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]
→ Ссылка