Python3内置函数——all与any
先祭出英文文档:
all
(iterable)-
Return
True
if all elements of the iterable are true (or if the iterable is empty). Equivalent to:def all(iterable): for element in iterable: if not element: return False return True
any
(iterable)-
Return
True
if any element of the iterable is true. If the iterable is empty, returnFalse
. Equivalent to:def any(iterable): for element in iterable: if element: return True return False
再上函数信息表格
函数原型 |
all(iterable) |
|
参数解释 |
iterable |
可迭代对象,参数不可为空,但iterable可空。 |
返回值 |
<class 'bool'> True 或 False。 |
|
函数说明 |
当 iterable 中所有元素都为 True 时(或者 iterable 为空),返回 True 。 |
函数原型 |
any(iterable) |
|
参数解释 |
iterable |
可迭代对象,参数不可为空,但iterable可空。 |
返回值 |
<class 'bool'> True 或 False。 |
|
函数说明 |
当 iterable 中有元素为 True 时,则返回 True 。如果当 iterable 为空时,返回 False 。 |
从官方文档中,我们可以得知,all(iterable)完全与下面这段代码等价:
1 def all(iterable): 2 for element in iterable: 3 if not element: 4 return False 5 return True
any(iterable)则与这段代码等价:
1 def any(iterable): 2 for element in iterable: 3 if element: 4 return True 5 return False
也就是说,当给定一个不为空的可迭代对象之后:
对于all函数,如果元素全为真则返回True,否则返回假。即只要存在为假的元素就返回假。
对于any函数,只要存在一个为真的元素就返回True。不存在为真的元素返回假。
另外,当可迭代对象为空时,all函数返回True,any函数返回False。这是因为iterable为空时遍历不执行,直接跳到 line 5 执行 return。
范例1:all函数各种参数的各种结果
1 >>> all(['a',(2,4),1,True]) #list都为真 2 True 3 >>> all(['a',(),1,True]) #list元素中有空tuple 4 False 5 >>> all(['a',(2,4),0,True]) #有0 6 False 7 >>> all(['a',(2,4),3,False]) #有False 8 False
范例2:any函数各种参数的各种结果
1 >>> any(['a',(2,4),3,True]) 2 True 3 >>> any(['a',(2,4),3,False]) 4 True 5 >>> any(['a',(),3,False]) 6 True 7 >>> any(['',(),0,False]) 8 False 9 >>> any(('a',(),3,False)) 10 True 11 >>> any(('',(),0,False)) 12 False
范例3:all函数参数为空与iterable为空时
1 >>> all() 2 Traceback (most recent call last): 3 File "<pyshell#20>", line 1, in <module> 4 all() 5 TypeError: all() takes exactly one argument (0 given) 6 >>>all([]) 7 True 8 >>> all(()) 9 True 10 >>> all({}) 11 True 12 >>> all('') #空list、truple、dict、str皆为True 13 True
范例4:any函数参数为空与iterable为空时
1 >>> any() 2 Traceback (most recent call last): 3 File "<pyshell#37>", line 1, in <module> 4 any() 5 TypeError: any() takes exactly one argument (0 given) 6 >>> any([]) 7 False 8 >>> any(()) 9 False 10 >>> any({}) 11 False 12 >>> any("") 13 False
范例5:iterable为空时不遍历
1 >>> p=1 2 >>> i=[] 3 >>> for item in i: #i为空不遍历 4 print (p) 5 6 7 >>>