List of concepts. In Python, they look something like this:
a = [f(x) for x in bar]
Where f (x) is a function and bar is a sequence.
You can define f (x) as a partially applied function with a construction similar to:
def foo(x): return lambda f: f*x
A function will be returned that multiplies the parameter by x. A trivial example of this type of construct used in list comprehension is as follows:
>>> 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]
Although I do not intend to use such a design in any, but rather esoteric cases. Python is not a true functional language, so it has less ability to do smart tricks with higher order functions than (say) Haskell. You can find applications for this type of construction, but this is not exactly what pythonic is. You could achieve a simple transformation with something like:
>>> y=5 >>> a=[1,2,3] >>> [x*y for x in a] [5, 10, 15]
source share