Решение с использованием reduce :
from functools import reduce
f = lambda x: f"f({x})"
g = lambda x: f"g({x})"
data = [1, 2, 3]
reduce(lambda acc, x: acc + [f(x), g(x)], data, [])
Хотя это и не понимание списка, это функциональный способ решения проблемы. Понимание списка - это, по сути, еще один способ обработки map
данных, но в этом случае, когда отображение не однозначно между входом и выходом, reduce
остается некоторое пространство для маневра с тем, как может быть сгенерирован выход.
В общем, любая for
реализация формы:
result = []
for n in some_data:
result += some_operation()
(Т.е. для циклов, предназначенных для создания побочного эффекта для списка или аналогичной структуры данных)
Может быть преобразован в декларативную map/reduce/filter
реализацию.