如何简化compare_lists函数的多条件判断逻辑?
优化
compare_lists函数的简洁实现 当然有更简洁的实现方式!我们可以利用Python中列表的布尔特性(空列表在布尔上下文中等价于False,非空列表等价于True),以及更紧凑的逻辑判断来减少冗余的条件分支,同时保持代码的可读性。
优化后的代码
import numpy as np def compare_lists(list_1, list_2): # 两个列表均为空,不返回任何值 if not list_1 and not list_2: return # 判断两个列表的非空状态是否不同 if bool(list_1) != bool(list_2): return 1 if list_1 else -1 # 两个列表均非空时比较最小值 return 1 if np.min(list_1) < np.min(list_2) else -1
代码解释
- 空列表判断简化:用
not list_1代替len(list_1) == 0,用list_1代替len(list_1) > 0,这是Python的惯用写法,更简洁直观。 - 合并空列表分支:当两个列表的非空状态不同时(一个空一个非空),通过
bool(list_1) != bool(list_2)一次性判断,再用三元表达式直接返回对应结果,避免了两个独立的elif分支。 - 非空列表的最小值比较:同样用三元表达式简化条件判断,让逻辑更紧凑。
验证使用示例
list_1 = [] list_2 = [2, 3, 4] print(compare_lists(list_1, list_2)) # 输出-1 list_1 = [1, 3, 8] list_2 = [2, 3, 4] print(compare_lists(list_1, list_2)) # 输出1
运行结果完全符合预期。
注:如果你的
list_1和list_2是普通Python列表而非NumPy数组,可以把np.min替换为Python内置的min函数,效果一致。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

