Is there a function that applies list of functions to a value?

Jussi Piitulainen jpiitula at ling.helsinki.fi
Wed Aug 28 09:10:49 EDT 2013


AdamKal writes:

> Hi, 
> 
> From time to time I have to apply a series of functions to a value
> in such a way:
> 
> func4(func3(func2(func1(myval))))
> 
> I was wondering if there is a function in standard library that
> would take a list of functions and a initial value and do the above
> like this:
> 
> func_im_looking_for([func1, func2, func3, func4], myval)
> 
> I looked in itertools but nothing seamed to do the job. This seams
> like something vary obvious that was needed many times elsewhere so
> maybe you could help me?

If you can have things backwards, or have func_im_looking_for reverse
things first, you can do it this way:

from functools import reduce

def funcall(arg, fun): return fun(arg)

def func1(arg): return 'f1({})'.format(arg)
def func2(arg): return 'f2({})'.format(arg)
def func3(arg): return 'f3({})'.format(arg)

# prints: f1(f2(f3(3.14)))
print(reduce(funcall, (func3, func2, func1), 3.14))



More information about the Python-list mailing list