Una soluzione che utilizza ridurre :
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, [])
Sebbene non sia una comprensione di elenchi, questo è un modo funzionale per affrontare il problema. La comprensione di una lista è essenzialmente un altro modo di map
interpretare i dati, ma in questo caso in cui la mappatura non è uno a uno tra l'input e l'output, reduce
lascia un po 'di spazio su come generare l'output.
In generale, qualsiasi for
implementazione del modulo:
result = []
for n in some_data:
result += some_operation()
(Cioè per i cicli destinati a produrre un effetto collaterale su un elenco o una struttura dati simile)
Può essere sottoposto a refactoring in map/reduce/filter
un'implementazione dichiarativa .