Приветствую,
weranda.
Python, каким я его для себя принимаю, и каким его видят разработчики, к мнению которых я прислушиваюсь - это в первую очередь выразительность/читабельность/удобство восприятия кода. Оптимизация после. А маниакальное стремление впихнуть все в одну строчку (а-ля "А вот я могу и так") - это еще после того, как после.
Поэтому
вариант 1.
Дополнительный, более наглядный, пример навскидку к сказанному:
хуже:>>> my_lists = [[[1, 2, 3], [4, 5, 6]]]
>>> flat = [x for sub1 in my_lists for sub2 in sub1 for x in sub2]
>>> flat
[1, 2, 3, 4, 5, 6]
лучше:>>> my_lists = [[[1, 2, 3], [4, 5, 6]]]
>>> flat = []
>>> for sub1 in my_lists:
for sub2 in sub1:
flat.extend(sub2)
>>> flat
[1, 2, 3, 4, 5, 6]
Такова моя точка зрения.