说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 内置函数 any() 的作用是,如果传入的可迭代对象的至少一个元素为真值则返回 True。经常用在序列计算和科学计算中,与 all()有着不同的逻辑。
它的语法形式为:
any(iterable)
函数接受单个参数:
all() 函数中如果给定 iterable (可迭代对象)中的所有元素:
注:元素除了是 0、空、None、False 外都算 True,可参考布尔值的取值逻辑。空元组、空列表返回值为 Flase,要特别注意。
总结如下:
None
和 False
0, 0.0, 0j(复数), Decimal(0),Fraction(0, 1)
'', (), [], {}, set(),range(0)
等价于:
def any(iterable):
for element in iterable:
if element:
return True
return False
以下是 all() 返回值参照表:
情况 | 返回值 |
---|---|
所有值为 true | True |
所有值为 false | False |
一个值为 true (其他为 false) | True |
一个值为 false (其他为 true) | True |
空的可迭代对象 | False |
字符串(不包括空串) | True |
空字符串 | False |
字典所有键为 true | True |
字典一个键为 false | False |
注:对于字典,如果所有键(不是值)都为 false 或字典为空,any() 将返回 false。如果至少有一个键为 true,any() 将返回 true。
以下是一些案例:
# True since 1,3 and 4 (at least one) is true
l = [1, 3, 4, 0]
any(l) # True
# False since both are False
l = [0, False]
any(l) # False
# True since 5 is true
l = [0, False, 5]
any(l) # True
# False since iterable is empty
l = []
any(l) # False
# Atleast one (in fact all) elements are True
s = "This is good"
any(l) # True
# 0 is False
# '0' is True since its a string character
s = '000'
any(l) # True
# False since empty iterable
s = ''
any(l) # False
# 0 is False
d = {0: 'False'}
any(l) # False
# 1 is True
d = {0: 'False', 1: 'True'}
any(l) # True
# 0 and False are false
d = {0: 'False', False: 0}
any(l) # False
# iterable is empty
d = {}
any(l) # False
# 0 is False
# '0' is True
d = {'0': 'False'}
any(l) # True
any([False, None, 0, 0.0, 0 + 0j, '', [], {}, ()])
# False
not any([False, False, False])
# True
not any([True, False, False])
# False
# 列表推导式
l = [0, 1, 2, 3, 4]
all([i > 2 for i in l])
# False
any([i > 2 for i in l])
# True
# 可以直接在生成器上使用,比列表快很多
(i > 2 for i in l)
# <generator object <genexpr> at 0x7fe33e7e3dd0>
all(i > 2 for i in l)
# False
any(i > 2 for i in l)
# True
更新时间:2021-06-16 16:38:18 标签:python any