Python中如何直接判断布尔列表是否包含混合值?
不用分支判断列表是否为混合True/False值的方法
当然可以实现!其实只需要结合内置的any()函数做两次判断,就能直接得到结果,完全不需要依赖if-elif-else分支测试。
核心思路
混合值列表的本质特征是:同时包含至少一个True和至少一个False。基于这个特征,我们可以用两个any()调用分别验证这两个条件,再将结果用and组合:
any(myList):检查列表中是否存在至少一个Trueany(not x for x in myList):检查列表中是否存在至少一个False(通过对每个元素取反后判断是否有True,等价于原列表包含False)
将这两个条件结合,就能直接得到是否为混合值的布尔结果。
一行代码实现
is_mixed = any(myList) and any(not x for x in myList)
示例验证
我们用几种典型情况测试:
- 全True列表:
myList = [True, True, True]→any(myList)为True,any(not x...)为False →is_mixed结果为False - 全False列表:
myList = [False, False]→any(myList)为False,any(not x...)为True →is_mixed结果为False - 混合列表:
myList = [True, False, True]→ 两个any()都为True →is_mixed结果为True
这种方式完全是表达式式的判断,没有任何分支逻辑,完美符合你的需求。
内容的提问来源于stack exchange,提问作者kbr85
相关产品推荐
相关产品推荐

