Rozwiązanie wykorzystujące redukuj :
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, [])
Chociaż nie jest to rozumienie listy, jest to funkcjonalny sposób podejścia do problemu. Zrozumienie listy jest zasadniczo innym sposobem map
na przeglądanie danych, ale w tym przypadku, gdy mapowanie nie jest jednym do jednego między wejściem a wyjściem,reduce
pozwala na pewne wahanie się w jaki sposób można wygenerować dane wyjściowe.
Ogólnie rzecz biorąc, każda for
implementacja formularza:
result = []
for n in some_data:
result += some_operation()
(Tj. Pętle mające na celu wywołanie efektu ubocznego na liście lub podobnej strukturze danych)
Można zamienić na deklaratywną map/reduce/filter
implementację.