先祭出英文文檔:
-
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 >>>