Python是否内置了判断布尔列表元素全同的allsame式内置方法?
Python是否有内置方法判断布尔列表全为真或全为假?
Python标准库中没有直接提供类似allsame(bool_list)的内置方法,用来判断非空布尔列表的元素是否全为真或全为假。
不过你目前使用的all(bool_list) or not any(bool_list)已经是非常高效且简洁的实现方式:
all(bool_list)会短路求值,遇到第一个False就停止遍历,判断是否全为真;not any(bool_list)同样短路求值,遇到第一个True就停止,判断是否全为假;- 两者用
or组合,刚好覆盖你需要的两种情况。
如果追求代码可读性,你可以自己封装一个极简的函数复用这个逻辑:
def allsame(bool_list): return all(bool_list) or not any(bool_list)
另外,还有一种更通用的实现方式(不仅适用于布尔列表,还支持其他类型元素),通过对比所有元素与第一个元素是否相等来判断:
def allsame(bool_list): first = bool_list[0] return all(x == first for x in bool_list)
这种写法对于长列表的性能表现也不错,同样是短路求值,遇到第一个不等的元素就会停止遍历。
内容的提问来源于stack exchange,提问作者Alexander Soare
相关产品推荐
相关产品推荐

