all() 是 Python 的内置逻辑判断函数,用于检查可迭代对象中的所有元素是否都为真值。它在数据校验、条件筛选等场景中,能让判断逻辑更加简洁、高效。
一、函数语法
all(iterable)参数:
iterable:必填,任意可迭代对象(如字符串、列表、元组、集合、字典、生成器等)。
要注意的是,对字典而言,all() 判断的是键(key)的真值,而不是值(value)。
返回值:
True:当且仅当 iterable 中的所有元素都为真值或 iterable 为空。
False:当至少有一个元素为假值时。
布尔判断逻辑:
遵循 Python 的“”:空、零、None、False 等为假,其余为真。
特别注意:空可迭代对象的 all() 返回 True,这是数学逻辑恒真性的定义(并不意味着空对象在布尔上下文中为真)。
二、基础用法示例
1、所有元素为真值
print(all([1, 2, 3])) # True
print(all(['a', 'b', 'c'])) # True2、存在假值
print(all([1, 0, 3])) # False
print(all([True, False, True])) # False3、空可迭代对象
print(all([])) # True
print(all(())) # True
print(all({})) # True空集合在逻辑恒真性定义下返回 True。
3、字典的判断
print(all({'a': 1, 'b': 2})) # True (判断的是键)
print(all({'a': 0, 'b': 2})) # True (键 'a' 不是假值)提示:
all() 对字典只检查键的真值,而不会检查对应的值。
三、进阶技巧
1、配合生成器表达式进行条件检查
建议使用生成器表达式而不是列表推导式,可以避免额外的内存消耗。
nums = [2, 4, 6, 8]
print(all(n % 2 == 0 for n in nums)) # True2、数据校验
data = ["apple", "banana", "cherry"]
if all(isinstance(item, str) for item in data):
print("全部是字符串")3、短路特性(惰性求值)
all() 会从左到右依次判断,一旦遇到假值立即返回 False,后续元素不再检查。
def check(x):
print(f"检查 {x}")
return x > 0
nums = [1, -1, 2]
print(all(check(n) for n in nums))
# 输出:
# 检查 1
# 检查 -1
# False(遇到假值立即返回)四、补充说明
1、与 any() 的关系
all(iterable):检查是否全部为真(逻辑与)。
any(iterable):检查是否至少有一个为真(逻辑或)。
2、可读性建议
对复杂条件判断,推荐 all() + 生成器表达式的写法,避免显式循环,提高可读性和性能。
3、性能考虑
all() 对可迭代对象按顺序依次判断,遇到假值立即结束(短路特性)。
对迭代器和生成器,all() 会惰性求值,不会一次性展开全部数据,在大数据集场景下性能优越。
“点赞有美意,赞赏是鼓励”
热门跟贴