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

发布于 2021-01-29 19:03:25

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

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

关注者
0
被浏览
53
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。
    import bisect
    bisect.bisect_left([100,300,500,800,1000], p)
    

    这里的文档:bisect



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看