n个函数的重复

Gui*_*ldo 6 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) ...
Run Code Online (Sandbox Code Playgroud)

但我不确切知道如何循环nargs中的函数.

谢谢.

Mal*_*sen 6

它非常简单 - 只需使用reduce:

from operator import mul    

def mult_func(*args):
    return lambda x: reduce(mul, (n(x) for n in args), 1)
Run Code Online (Sandbox Code Playgroud)

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

  • 使用`operator.mul`代替; 无法保证函数返回整数. (4认同)

che*_*ner 5

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

def mult_func(*args):
    def _(x):
        rv = 1
        for func in args:
            rv *= func(x)
        return rv
    return _
Run Code Online (Sandbox Code Playgroud)

  • 基于OP的尝试,我认为他正在寻找一种能够创建计算产品的函数的函数,而不是立即为特定的"x"值计算产品.(`f = mult_func(f1,f2,f3); f(3)== f1(3)*f2(3)*f3(3)`) (2认同)