n个函数的重复

时间:2015-05-13 01:33:28

标签: python function

我想在Python中编写一个函数,它返回n个函数(f1(x) * f2(x) * f3(x) * ... * fn(x))的乘法。

我在思考像:

def mult_func(*args):
    return lambda x: args(0)(x) * args(1)(x) ...

但我并不确切知道如何在args中循环n函数。

谢谢。

4 个答案:

答案 0 :(得分:6)

非常简单 - 只需使用reduce:

from operator import mul    

def mult_func(*args):
    return lambda x: reduce(mul, (n(x) for n in args), 1)

这只是一个循环函数的生成器表达式,并通过乘法减少。

答案 1 :(得分:5)

args只是一个元组,但很难以lambda表达式的方式迭代它们(除非你使用reduce)。改为定义嵌套函数。

def mult_func(*args):
    def _(x):
        rv = 1
        for func in args:
            rv *= func(x)
        return rv
    return _

答案 2 :(得分:2)

def mult_func(x, *args):
    total = 1
    for func in args:
        total *= func(x)
    return total

非常简单地返回所有args的产品,并输入x

快速举例:

def square(n):
    return n**2

>>> print mult_func(2, square, square) 
16
>>> print mult_func(2, square, square, square)
64

答案 3 :(得分:0)

这是那个晚上的时间,所以这是一个相互递归的解决方案:

def multiply_funcs(funcs):
    def inner(x):
        if not funcs:
             return 1
        return funcs[0](x) * multiply_funcs(funcs[1:])(x)
    return inner