我正在重构一个函数,该函数给定一系列隐式定义间隔的端点,检查间隔中是否包含数字,然后返回对应的数字(以任何可计算的方式不相关)。现在处理该工作的代码是:
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太可怕了,并且缺少间隔和返回值都经过硬编码的缺点。当然,任何数据结构的使用都是可能的。
import bisect bisect.bisect_left([100,300,500,800,1000], p)
这里的文档:bisect