Объединить в один список после функции map

Имеется функция возвращающая несколько элементов, имеется массив данных, который необходимо обработать этой функцией, при использовании функции map данные возвращаются в tuple. Есть ли возможность их объединить сразу в 1 список?

def func(x):
    return x, x * 2

a = [1, 2, 3]
b = list(map(func, a))
print(b) # [(1, 2), (2, 4), (3, 6)]

Хотелось бы

[1, 2, 2, 4, 3, 6]

Нашел такой вариант, но данных очень много и не хотелось бы еще раз их обрабатывать.

l1 = [[1, 2, 3], [4, 5, 6]]
print(sum(l1, [])) # [1, 2, 3, 4, 5, 6]

Ответы (3 шт):

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

Вот так можно:

def func(x):
    return x, x * 2

a = [1, 2, 3]
b = []
for res in map(func, a):
    b.extend(res)
print(b) # [1, 2, 2, 4, 3, 6]
→ Ссылка
Автор решения: insolor

Методом из вашего вопроса (лямбда нужна чтобы преобразовать значение, которое вернула функция func, в список, иначе будет ошибка типизации при попытке сложить кортеж и список):

b = sum(map(lambda x: list(func(x)), a), [])

С помощью chain из itertools:

from itertools import chain


def func(x):
    return x, x * 2


a = [1, 2, 3]
b = list(chain(*map(func, a)))
# или b = list(chain.from_iterable(map(func, a)))
print(b)  # [1, 2, 2, 4, 3, 6]

chain.from_iterable(something) эквивалентно chain(*something), что использовать - дело вкуса.

→ Ссылка
Автор решения: Serhii Khortiuk
from itertools import chain
list(chain.from_iterable(map(func, a)))
[1, 2, 2, 4, 3, 6]
→ Ссылка