От нечего делать решил сравнить оба метода, которые вы предлагаете. Выбирал руками без всякой автоматизации, но, возможно, попробую написать что-то для отслеживания и сбора данных.
Изначально вы предлагали два варианта:
- Вариант со списковым включением
- Вариант с list + map
Я подумал и добавил ещё два варианта. От ваших они практически не отличаются. За тем исключением, что tuple_list
- это кортеж
Сделал это из того соображения, что кортеж занимает меньше места, чем лист. Может быть, это сыграет роль
Пример:
a = [1]
b = (1)
print(a.__sizeof__()) # 48
print(b.__sizeof__()) # 28
Каждый скрипт запускался обособленно от других. Запускал я 5 раз и результат получился следующий:

Код, которым я тестировал:
from collections import namedtuple
import time
start = time.time()
for i in range(5000):
Nt = namedtuple('Nt', 'field1 field2 field3')
tuple_list = ((1,2,3), (4,5,6), (7,8,9))
named_tuple_list = [Nt(*t) for t in tuple_list]
end = time.time() - start
print('Время выполнения списковое включение + (кортеж) - ', end)
# ---------------------------------------------
start = time.time()
for i in range(5000):
Nt = namedtuple('Nt', 'field1 field2 field3')
tuple_list = [(1,2,3), (4,5,6), (7,8,9)]
named_tuple_list = [Nt(*t) for t in tuple_list]
end = time.time() - start
print('Время выполнения списковое включение - ', end)
# ---------------------------------------------
start = time.time()
for i in range(5000):
Nt = namedtuple('Nt', 'field1 field2 field3')
tuple_list = [(1,2,3), (4,5,6), (7,8,9)]
named_tuple_list = list(map(Nt._make, tuple_list))
end = time.time() - start
print('Время выполнения list + map - ', end)
# ------------------------------------------
start = time.time()
for i in range(5000):
Nt = namedtuple('Nt', 'field1 field2 field3')
tuple_list = ((1,2,3), (4,5,6), (7,8,9))
named_tuple_list = list(map(Nt._make, tuple_list))
end = time.time() - start
print('Время выполнения list + map + кортеж - ', end)