核心定义
all() 用于判断可迭代对象内所有元素是否均为真值(Truthy)。若所有元素均为真值,或可迭代对象为空,则返回 True;否则返回 False。等价实现代码如下:
def all(iterable): for element in iterable: if not element: return False return True基础用法示例
# 所有元素均为真值 print(all([1, 2, 3])) # 输出: True # 包含假值元素 print(all([1, 0, 3])) # 输出: False # 空可迭代对象返回 True print(all([])) # 输出: True真值转换规则
以下值会被判定为假值:
None与False- 数值零:
0,0.0,0j - 空序列或空容器:
"",[],(),{} - 实现了
__bool__()或__len__()并返回False/0的自定义类实例
进阶技巧
- 配合生成器表达式
推荐使用生成器表达式替代列表推导式,节省内存开销:
nums = [2, 4, 6, 8] # 验证所有数值均为偶数 print(all(n % 2 == 0 for n in nums)) # 输出: True- 短路求值优化
all() 会在遇到首个假值时立即返回 False,无需遍历全部元素。处理超大规模数据集时可显著提升性能。 - 字典特殊处理逻辑
all() 默认仅判断字典的键(Key)是否为真值,而不会检查对应的值:
# 键均为真值,返回 True print(all({'a': 0, 'b': 2})) # 输出: True常见误区与避坑指南
- 误判非布尔类型元素
all() 并非仅判断数值是否非零,而是遵循Python的真值转换规则进行全面判断。 - 嵌套列表深层判断
all() 默认仅遍历最外层元素,需通过递归展开或生成器表达式实现深层元素校验:
def flatten(itr): for item in itr: if isinstance(item, list): yield from flatten(item) else: yield item nested_deep = [[[0, 1], [2]], [3, []]] flattened = list(flatten(nested_deep)) print(all(flattened)) # 输出: False- 空容器逻辑处理
空可迭代对象恒返回 True,需根据业务场景进行特殊处理避免逻辑错误。
典型应用场景
- 批量验证:检查多个表单输入字段是否全部非空
- 数据完整性校验:验证数据集内所有元素是否符合预设条件
- 权限检查:确认用户是否拥有执行特定操作的全部权限
- 文件一致性校验:批量验证文件名是否符合统一命名规范