any()和all()都是Python中内置的函数,用于对可迭代对象(列表、元组、集合等)做逻辑判断。
any()函数执行的是或逻辑,一真为真,全假才假,也就是说可迭代对象中,任意一个元素为True,则结果为True,所有元素为False时,结果才为False。
我们来看一下any()函数用法的例子:
lst1 = [False, 0, None, 1]print(any(lst1))lst2 = [False, None]print(any(lst2))
第一个print会打印True,因为列表中的元素1会认为是真值;第二个print会打印False,因为False和None全是假值。
实际场景中,我们可能会这么用:
# 是否存在大于0的数字,搭配生成器表达式使用lst1 = [1, 2, 3, -1, -2]print(any(x < 0 for x in lst1)) # True
all()函数执行的是与逻辑,一假为假,全真才真,也就是说可迭代对象中,任意一个元素为False,则结果为False,所有元素为True,结果才为True。
我们来看一下all()函数用法的例子:
lst1 = [False, True, 1, 'python']print(all(lst1))lst2 = [True, 1]print(all(lst2))lst3 = []print(all(lst3))
第一个print打印False,因为列表中第一个元素就是False,为假值;第二个print打印True,因为列表中的元素都为真值;第三个print也打印True,这个看起来特别一些,可以理解为列表中不存在为假值的元素,所以结果为True。
实际场景中,也可以像any()一样搭配生成器表达式使用:
# 判断列表元素是否都大于3lst = [4, 5, 6]print(all(x > 3 for x in lst)) # True
也可以用它来判断列表中是否存在空字符串:
lst = ['hello', 'python', '']print(all(lst)) # False