如何简化多分支判断代码?可否将其改写为更高效的for循环结构?
优化方案
你提到的多分支判断场景不需要用for循环实现,更优的简化方案是函数字典映射,查找效率为O(1),比链式if-elif的平均O(n)判断更快,代码更简洁,后续新增分支也只需要更新字典条目即可。
字典映射实现(推荐)
# 映射关系仅需初始化一次 func_map = { 1: function1, 2: function2, 3: function3, 4: function4 } # 调用时直接通过key取值执行,无多余判断 func_map[selection]()
如果需要处理selection不在1-4范围内的边界场景,可以用get方法指定默认 fallback 函数:
# 匹配失败时执行默认逻辑 func_map.get(selection, default_function)()
不推荐的for循环实现
硬要改写为for循环结构的话,执行效率反而更低,需要遍历所有项匹配,最差时间复杂度为O(n),代码也没有明显变短,示例如下:
func_list = [function1, function2, function3, function4] for idx, func in enumerate(func_list, start=1): if idx == selection: func() break
内容的提问来源于stack exchange,提问作者critiqalfish
相关产品推荐
相关产品推荐

