小编典典

Python:从时间间隔到值的映射

python

我正在重构一个函数,该函数给定一系列隐式定义间隔的端点,检查间隔中是否包含数字,然后返回对应的数字(以任何可计算的方式不相关)。现在处理该工作的代码是:

if p <= 100:
    return 0
elif p > 100 and p <= 300:
    return 1
elif p > 300 and p <= 500:
    return 2
elif p > 500 and p <= 800:
    return 3
elif p > 800 and p <= 1000:
    return 4
elif p > 1000:
    return 5

IMO太可怕了,并且缺少间隔和返回值都经过硬编码的缺点。当然,任何数据结构的使用都是可能的。


阅读 211

收藏
2020-12-20

共1个答案

小编典典

import bisect
bisect.bisect_left([100,300,500,800,1000], p)

这里的文档:bisect

2020-12-20