Python中如何向range()函数传入整数元组实现区间判断
元组存储区间边界的实现方案
用元组统一存储区间边界的写法完全可行,之前的代码报错是因为range()只接收独立的整数位置参数,不会自动拆分传入的元组对象,以下是两种可直接使用的实现方式:
方案1:解包元组传入range(最小改动适配原有逻辑)
用Python的*解包运算符,把元组内的两个边界值拆分为独立参数传给range(),效果和单独传起止变量完全一致:
VALID_YEARS = (2010, 2020) # 注意if语句末尾需补全冒号 if number in range(*VALID_YEARS): # 区间匹配后的业务逻辑 pass
注意:
range()遵循左闭右开规则,上述代码的判断范围是2010 ≤ number < 2020,和你最初写range(2010, 2020)的逻辑完全对齐。如果需要包含右边界2020,将元组的右边界值设为2021即可。
方案2:链式比较判断(性能与通用性更优)
直接通过下标读取元组的边界值,用Python原生支持的链式比较做判断,不需要生成range对象,执行效率更高,同时支持浮点数等非整数类型的区间判断:
VALID_YEARS = (2010, 2020) if VALID_YEARS[0] <= number < VALID_YEARS[1]: # 区间匹配后的业务逻辑 pass
两种方案都不需要拆分定义两个独立的起止变量,完全符合你用单个语义化元组管理区间边界的需求。
内容的提问来源于stack exchange,提问作者nluizsoliveira
相关产品推荐
相关产品推荐

