我有一个函数数组 [f(x),g(x),...]
我想要做的是根据 x 的值所在的范围调用适当的函数。
f = lambda x: x+1
g = lambda x: x-1
h = lambda x: x*x
funcs = [f,g,h]
def superFunction(x):
if x <= 20:
return(funcs[0](x))
if 20 < x <= 40:
return(funcs[1](x))
if x > 40:
return(funcs[2](x))
有没有更好/Pythonic 的方法来处理动态数量的函数
计划是沿着数据部分动态生成 n 个 polyfit 函数,然后将它们组合成一个可调用函数。
最佳答案
您将使用调度序列:
funcs = (
(20, f),
(40, g),
(float('inf'), h),
)
def superFunction(x):
for limit, f in funcs:
if x <= limit:
return f(x)
或者,如果函数和限制列表很大,请使用二等分
搜索来查找最接近的限制。
关于python - 有没有一种Python式的方法将基于范围的分段函数分组为单个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17323779/