如何简化3个变量对应7种分支的if else条件判断逻辑
多变量分支判断简化方案
核心思路
这类N个0/1状态变量对应2^N -1种有效分支的场景,最简洁的实现方式是把多个变量按位编码成唯一的整数key,再用字典做映射直接匹配处理逻辑,完全可以替代冗长的if-elif链。
3变量场景改造代码
def checkXYZ(x, y, z): # 按位编码生成唯一key,位顺序可根据实际需求调整 key = (x << 2) | (y << 1) | z # key与处理函数的映射表 handler_map = { 0b100: doX, 0b010: doY, 0b001: doZ, 0b110: doXY, 0b011: doYZ, 0b101: doXZ, 0b111: doXYZ } # 匹配到处理函数则执行 handler = handler_map.get(key) if handler: handler()
通用拓展规则
- 2个变量的场景仅需调整编码逻辑和映射表即可,对应key取值为0b10、0b01、0b11共3种,刚好匹配3种判断条件的需求
- 变量数量增加时,只需要新增对应位的编码、在映射表中补充对应的key与处理函数即可,代码结构不会随分支增加变得冗余混乱
- 若处理函数需要传参,执行时改为
handler(参数1, 参数2...)即可
注意事项
如果变量本身是布尔类型(True/False)也可以直接参与位运算,Python中True默认对应1、False默认对应0,无需额外做类型转换。
内容的提问来源于stack exchange,提问作者swaziland
相关产品推荐
相关产品推荐

