我正试图返回一个链接函数
在下面,我想给它一个映射到函数的值列表。例如下面的代码
get_function([0,1,2])
返回函数
fun(x , [a,b,c]) = a*b/x**c = mult(div(pow(x,c),b),a)
到目前为止,我已经接近
def get_function(function_params):
def fun(x,params):
func = x
for i in range(1,len(function_params)):
if function_params[i] == 0:
func = pow(func,params[-i])
elif function_params[i] == 1:
func = div(func,params[-i])
elif function_params[i] == 2:
func = mult(func,params[-i])
return func
return fun
显然,我可以使用这个庞大的if语句列表,但我希望它更快,这样返回函数将大大提高性能。注意:这是一个MRE
好吧,我不明白为什么不能在调用get_function()
时列出要应用的函数。你那时已经掌握了所有这些信息。
唯一缺少的是稍后给出的参数值。
from operator import mul
from operator import truediv as div
def get_function(function_params):
funcs = [lambda x,p: pow(x,p),lambda x,p: div(x,p),lambda x,p: mul(x,p)]
funcs = [funcs[i] for i in function_params]
def fun(x, params):
func = x
for f,p in zip(funcs, params):
func = f(func, p)
return func
return fun
f = get_function([2,2])
print(f(5,[3,4]))
输出:
60
由于60 = (5*3)*4