Python all() 语法
all() 是 Python 的一个内置函数,它用于判断一个可迭代对象中 “所有元素” 是否都为真值。如果全部都是真值,则返回 True;只要有一个不是真值,则返回 False。
在 Python 中,0、''、[]、{}、()、None、False 等都会被认为是假值(False),而非空值都会认为是真值(True)。
语法:
all(iterable)说明:
all() 函数接收单个参数。
iterable(必选):是一个可迭代对象。像列表、元组、字符串等都是可迭代对象。
注意: 如果参数 iterable 是一个空对象(如 []、()、''、{}、set() 等),那么 all() 返回的是 True。
Python all() 摘要
| 使用频率 | 中 |
|---|---|
| 时间复杂度 | O(1)(最好情况)、O(n)(最坏情况) |
| 官方文档 | 查看 |
| 相关函数 | any()、bool()、filter()、map() |
Python all() 示例
接下来,我们通过几个简单的例子来讲解一下 Python all() 函数是如何使用的。
示例 1:all() 用于列表
a = [1, 2, 3, 4, 5]
print(all(a))
b = [1, 2, 0, 4, 5]
print(all(b))
c = []
print(all(c))运行结果如下。
True
False
True分析:
需要注意的是,all() 判断的是列表的元素,而不是列表本身。初学的小伙伴很容易认为 all(c) 返回的是 False。
示例 2:all() 用于字符串
s1 = 'lvye'
print(all(s1))
s2 = '000'
print(all(s2))
s3 = ''
print(all(s3))
s4 = ' '
print(all(s4))运行结果如下。
True
True
True
True分析:
需要注意的是,字符串的每一个元素本质上是一个字符。对于 s2 来说,它的元素都是'0'(这是字符串而非数字 0),而 '0' 会被认为是 True。对于 s4 来说,它的元素是包含一个空格的字符 ' '(注意不是空字符 ''),而 ' ' 会被认为是 True。
示例 3:all() 用于字典
d = {0: 'Jack', 1: 'Lucy', 2: 'Tony'}
print(all(d))运行结果如下。
False分析:
当 all() 函数用于字典时,此时它判断的是字典的 “键” 是否为真,而不是字典的 “值” 是否为真。
all() 实现原理
all() 函数其实是一个快捷语法。当然了,我们也可以手动去实现一个 all() 函数,请看下面例子。
示例 4:手动实现 all() 的功能
def my_all(iterable):
for item in iterable:
if not item:
return False
return True
nums = [1, 2, 3, 4, 5]
print(my_all(nums))运行结果如下。
Trueall() 与 any() 的区别
all() 和 any() 这 2 个函数很相似,它们之间的区别如下。
all():只有所有元素都为真值(True),all() 才会返回 True。只要有一个元素为 False,那么它就会返回 False。any():只有所有元素都为假值(False),any() 才会返回 False。只要有一个元素为 True,那么它就会返回 True。
示例 5:all() vs any()
data = [0, False, 5]
print(all(data)) # False(存在假值)
print(any(data)) # True(存在真值 5)运行结果如下。
False
True提示: all() 为短路操作,遇到第一个假值立即返回 False,适合用于处理大型可迭代对象。
