如何实现类似`if a in {b, c, d}`的多变量阈值比较精简写法?
精简写法方案
Python 内置的any()函数完全可以满足你的需求,写法和你期望的in语法风格非常接近:
if any(x > a for x in (b, c, d)): # 你的业务逻辑
- 逻辑和原写法完全等价:和你原来的
or链式判断一样是短路求值,只要找到第一个大于a的变量就会直接返回True,不会产生多余的性能损耗 - 扩展性极强:如果后续要新增判断变量,只需要往后面的元组里加元素即可,不用再重复写
or x > a - 适配场景广:如果你的待判断值本身就存放在列表、元组等可迭代对象里,可以直接传入,不用逐个列变量
如果后续需要判断所有变量都大于阈值的场景,可以用对应的all()函数:
if all(x > a for x in (b, c, d)): # 所有变量都大于a时才触发
内容的提问来源于stack exchange,提问作者Matt Briggs
相关产品推荐
相关产品推荐

