You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.6 替代多if判断实现range区间匹配的优化方案

改写方案

核心思路是把分散的区间规则整合为统一的有序映射表,通过遍历匹配替代大量并列if判断,逻辑更清晰,也更易维护。

实现代码

# 统一维护区间与对应返回值的映射关系,按区间从小到大排序
LEVEL_RULES = [
    (range(1, 10), 12),
    (range(10, 12), 16),
    (range(12, 16), 18),
    (range(16, 18), 29),
    (range(18, 29), 34),
    (range(29, 34), 46),
    (range(34, 46), 54),
    (range(46, 54), 63),
    (range(54, 63), 73),
    (range(63, 73), 85),
    (range(73, 85), 85),
]

def calculate_level(recomendation, level_buy, default=0):
    if recomendation != "buy":
        return default
    # 遍历匹配第一个符合条件的区间,返回对应值
    for interval, target_level in LEVEL_RULES:
        if level_buy in interval:
            return target_level
    return default

# 调用示例
level_buy = 62
level = calculate_level("buy", level_buy)
# 输出结果为73,符合需求

更简洁的函数式写法

可以用next()配合生成器表达式简化查找逻辑,代码更紧凑:

def calculate_level(recomendation, level_buy, default=0):
    if recomendation != "buy":
        return default
    return next(
        (target_level for interval, target_level in LEVEL_RULES if level_buy in interval),
        default
    )

优势说明

  • 可读性高:所有区间规则集中在LEVEL_RULES中,无需逐行查看if判断就能理清对应关系
  • 易维护:后续调整区间规则只需要修改LEVEL_RULES的条目,不需要改动核心逻辑
  • 无副作用:逻辑封装为纯函数,输入输出明确,方便复用和单元测试

内容的提问来源于stack exchange,提问作者CodeAgainst

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:24:06