Luc*_*cas 1 python function intervals
我在用 Python 编写一个基于输入 x 的函数时遇到问题,输出 ay 取决于输入 x 所在的时间间隔。截至目前,代码如下所示
def getPowerLimit(x):
if 0.009 <= x <= 380.2:
return -39
elif 380.2 < x <= 389.8:
return -94
elif 389.8 < x <= 390.2:
return -39
elif 390.2 < x <= 399.8:
return -60
elif 399.8 < x <= 410.2:
return -39
Run Code Online (Sandbox Code Playgroud)
这需要以不同的间隔进行,最多可达 12000 左右。每个都有不同的返回值,这意味着我将有很多不同的情况。这当然不是解决这个问题的最佳方法,所以我想知道是否有一种不同的、更快的方法来解决这个问题。
正如 dlask 在您的问题中的评论所建议的,您可以使用该bisect库:
boundaries = [0.009, 380.2, 389.8, 390.2, 399.8, 410.2]
values = [None, -39, -94, -39, -60, -39, None]
# what you need
import bisect
values[bisect.bisect_left(boundaries, x)]
Run Code Online (Sandbox Code Playgroud)
假设您可以使用一些外部源(例如 CSV)构建boundaries和。values