如何更优雅地实现元组列表多条件校验的if语句?
代码优化方案
核心逻辑梳理
原校验规则可等价合并为:必须满足首元组首元素为字符串,同时满足以下两个条件任意一个即可通过:
- 列表仅包含1个元组
- 列表包含多个元组时,首元组的浮点数值至少是第二个元组浮点数值的2倍
优化后代码
# 建议先补充空列表校验,避免索引越界 if not tuples: print("Fail") elif isinstance(tuples[0][0], str) and (len(tuples) == 1 or tuples[0][1] >= 2 * tuples[1][1]): print("Success") else: print("Fail")
优化说明
- 利用逻辑运算的分配律合并重复条件,消除多层嵌套和重复的成功分支代码
- 依赖Python逻辑或的短路特性:当
len(tuples) == 1判定为真时,不会执行后续访问tuples[1]的逻辑,不会出现索引越界问题 - 额外补充了空列表的边界处理,解决原代码遇到空列表时直接报错的问题
- 注:原规则要求「至少是2倍」,如果你需要严格大于2倍,把
>=改成>即可匹配你原有代码的逻辑。
内容的提问来源于stack exchange,提问作者genjong
相关产品推荐
相关产品推荐

