我想在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中的函数.
谢谢.
它非常简单 - 只需使用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)
这只是一个循环函数的生成器表达式,并通过乘法减少.
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)