Una solución que usa reducir :
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, [])
Si bien no es una lista de comprensión, esta es una forma funcional de abordar el problema. La comprensión de una lista es esencialmente otra forma de map
analizar los datos, pero en este caso, donde el mapeo no es uno a uno entre la entrada y la salida,reduce
permite cierto margen de maniobra con respecto a cómo se puede generar la salida.
En general, cualquier for
implementación del formulario:
result = []
for n in some_data:
result += some_operation()
(Es decir, para bucles destinados a producir un efecto secundario en una lista o estructura de datos similar)
Se puede refactorizar en una map/reduce/filter
implementación declarativa .