Список пониманий. В Python они выглядят примерно так:
a = [f(x) for x in bar]
Где f (x) - некоторая функция, а bar - последовательность.
Вы можете определить f (x) как частично примененную функцию с такой конструкцией, как:
def foo(x):
return lambda f: f*x
Который вернет функцию, которая умножает параметр на х. Тривиальный пример этого типа конструкции, используемой в понимании списка, выглядит так:
>>> def foo (x):
... return lambda f: f*x
...
>>> a=[1,2,3]
>>> fn_foo = foo(5)
>>> [fn_foo (y) for y in a]
[5, 10, 15]
Хотя я не представляю, как использовать такую конструкцию в каких-то, но довольно эзотерических случаях. Python не является настоящим функциональным языком, поэтому он имеет меньше возможностей для создания хитрых трюков с функциями более высокого порядка, чем, скажем, Haskell. Вы можете найти приложения для этого типа конструкции, но на самом деле это не , что pythonic. Вы можете добиться простого преобразования с помощью чего-то вроде:
>>> y=5
>>> a=[1,2,3]
>>> [x*y for x in a]
[5, 10, 15]