回想下,在 Python 中编程时,你是否曾经需要检查某个可迭代对象(如列表)中的任何元素或所有元素的计算结果是否为True
?
假设,我们要判断数字列表a
的所有数字是否都大于0
,此时你估计会这么干:
a = [1, 2, 3, 4]
def is_big_0(l):
# 判断列表l的所有数字是否大于,如果大于0则返回True,否则返回False
for i in l:
if i <= 0:
return False
return True
print(a)
停顿几秒,想一想,假设下次我们要判断其他条件,如每个元素都是偶数或奇数?难道每次都要写一个函数然后for循环遍历吗?
其实python中有两个神奇的函数any()
和all()
,他们可以快速完成上面类似的任务!
接下来,我们将分享 Python 的 any()
和 all()
函数,并使用简单的示例来了解它们的工作原理。
Python 中的布尔数据类型
在学习 any()
和 all()
之前,先快速回顾一下 Python 中的布尔数据类型。你可以在任何 Python 对象上调用 bool()
以获取其真假值。如下代码示例:
# None 的真假值是 False
print(bool(None))
# 输出 False
# 一个空字符串("")的真假值是 False
print(bool(""))
# 输出 False
# 一个空字符串或任何可迭代对象的真假值是 False
print(bool([]))
# 输出 False
# 0 {int (0), float (0.0) 和 complex (0j)} 的真假值是 False
print(bool(0))
# 输出 False
如上面的代码所示,可知:
None
的真假值为False
- 数字零(
0
)——整数、浮点数和0
的复数表示——都是False
- 所有空的可迭代对象(如列表、元组和字符串)的真假值为
False
。
也就是说,所有非零值和非空可迭代对象都为True
,这是相当直观的。
请记住:所有非零值和非空可迭代对象都为True
,这是相当直观的!
如何在 Python 中使用 any() 函数
让我们了解 any()
函数的语法,先看一些简单的例子,之后再看更有用的例子。