Рішення з використанням зменшення :
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
реалізацію.