您好,登錄后才能下訂單哦!
本篇內容主要講解“Python any()和all()函數怎么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python any()和all()函數怎么用”吧!
在我們進入any()和all()之前,讓我們快速回顧一下 Python 中的布爾數據類型。您可以調用bool()方法來獲取任何 Python 對象的真值。您可以在您喜歡的 IDE 中運行下面的代碼示例。
# truth value of None is False
print(bool(None))
# Output
False
# truth value of an empty string ("") is False
print(bool(""))
# Output
False
# truth value of an empty list (or any iterable) is False
print(bool([]))
# Output
False
# truth value of 0 {int (0), float (0.0) and complex (0j)} is False
print(bool(0))
# Output
False
如上面的片段所示,
None有一個真值False,
數字 zero( 0) – 整數、浮點數和復數表示0并且都有一個真值False,
所有空的可迭代對象(如列表、元組和字符串)的真值為False。
也就是說,所有非零值和非空可迭代對象的真值都是相當直觀的True。
讓我們了解any()函數的語法,看一些簡單的例子,然后再看更有用的例子。
語法:any(iterable)
返回True ,只要該可迭代對象中至少有一項是 就返回True。
如果可迭代對象為空,則返回False。
因此,該any()函數將一個可迭代對象作為參數,并且True只要該可迭代對象中至少有一項是 就返回True。
下面是幾個簡單的例子來驗證any()函數是如何工作的:
list_1 = [0,0,0,1,0,0,0,0]
# any(a list with at least one non-zero entry) returns True
print(any(list_1))
# Output
True
list_2 = [0j,0,0,0.0,0,0,0.0,0]
# any(a list of zeros) returns False
print(any(list_2))
# Output
False
list_3 = [True, False, False]
# any(a list with at least one True value) returns True
print(any(list_3))
# Output
True
list_4 = ["","","code more"]
# any(a list with at least one non-empty string) returns True
print(any(list_4))
# Output
True
list_5 = ["","",""]
# any(a list of empty strings) returns False
print(any(list_5))
# Output
False
現在讓我們使用該any()函數來檢查字符串中是否有任何數字。讓我們把步驟寫下來。
檢查:字符串中是否有任何數字?
遍歷字符串以訪問字符串中的每個字符。
通過調用isdigit()它的方法檢查每個字符是否是數字。
如果被測字符是一個數字,isdigit()返回True,否則返回False。
列表推導式對于在列表中收集所有這些真值非常有幫助。這是一個快速回顧:
# List Comprehension
[output_expression for every_item in an_iterable]
|
|
V
result of doing something on each item in the iterable
# In essence, Loop through the iterable, do something on each item and
return the result of the operation.
如下面的代碼片段所示,我們的示例字符串coding**is**cool**345包含數字。
因此,any()在字符串上調用函數應該返回True. 我們使用列表理解來根據字符是否為數字來獲取True和False值的列表。
my_string = "coding**is**cool**345"
are_there_digits = [char.isdigit() for char in my_string]
print(any(are_there_digits))
# Output
True
請注意are_there_digits列表的項數與字符串的長度一樣多。
對于字符串中的每個字符,都有一個對應的真值——如果字符是數字對應True,如果字符不是數字對應False,如下所示。
print(are_there_digits)
# Output
[False, False, False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, True, True, True]
讓我們再舉一個類似的例子。這一次,讓我們檢查字符串中字母的出現。
被測試的字符串***456278)))不包含字母——按預期調用any()返回False。對于字符串中的每個字符,調用該isalpha()方法檢查它是否是一個字母。
my_string = "***456278)))"
num = [char.isalpha() for char in my_string]
print(any(num))
# Output
False
這is_letter是一個False值列表,如下所示:
print(is_letter)
# Output
[False, False, False, False, False, False, False, False, False, False, False, False]
假設您決定提高工作效率并寫下下面顯示的列表。然而,你選擇不苛求自己,并決定只要清單中的一項發生,你就可以擁有很多糖果![
請注意我們如何考慮多個條件,但即使其中一個評估為 ,也會選擇糖果True。
這與if您需要檢查邏輯or運算符鏈接的多個條件是否計算為 的語句非常相似True嗎?是的,它是這樣的,并且該any()功能在這樣做時可以派上用場。
假設您N有條件c1, c2, c3, ..., cN。考慮下面的偽代碼:
if c1 or c2 or ... c_(N-1) or CN:
# DO THIS
else:
# DO THIS
您現在可以將所有這些條件收集在一個可迭代對象中,例如列表或元組,然后調用any()該可迭代對象來檢查一個或多個條件是否True為 ,如下所示。這不簡單嗎?
conditions = [c1,c2,..., c_N]
if any(conditions):
# DO THIS
else:
# DO THIS
讓我們從all()函數的語法開始。
語法:all(iterable)
返回True如果bool(x)是True所有值x的迭代器。
True如果可迭代對象為空,則返回。
該all()函數將一個可迭代對象作為參數,True僅當可迭代對象中的所有項計算結果為True或可迭代對象為空時才返回。在所有其他情況下,all()函數返回False。
讓我們以類似的例子來檢查字符串的某些特征。
除了字母之外,測試字符串還coding**is**cool包含特殊字符*。因此,當我們使用該all()函數檢查字符串中的所有字符是否都是字母時,我們應該得到False.
my_string = "coding**is**cool"
are_all_letters = [char.isalpha() for char in my_string]
print(all(are_all_letters))
# Output
False
print(are_all_letters)
# Output
[True, True, True, True, True, True, False, False, True, True, False, False,
True, True, True, True]
注意列表如何在字符串中出現的所有位置are_all_letters都有False值*。
現在讓我們使用該all()函數檢查字符串中的所有字符是否都是數字。測試字符串56456278僅包含數字,因此,調用all()應該返回,True因為列表推導式為我們提供了一個True值列表。
my_string = "56456278"
are_all_digits = [char.isdigit() for char in my_string]
print(all(are_all_digits))
# Output
True
print(are_all_digits)
# Output
[True, True, True, True, True, True, True, True]
讓我們考慮以下示例。這一次,您要爭奪 iPad,而且條件更加嚴格。您必須完成列表中的所有任務才能從您的堂兄那里獲得 iPad。
現在,這與使用if語句檢查由邏輯and運算符鏈接的多個條件是否評估為 非常相似True,如下所示:
if c1 and c2 and ... c_(N-1) and CN:
# DO THIS
else:
# DO THIS
您可以使用該all()函數通過收集可迭代中的條件,然后在可迭代中調用該all()函數來使這一切更加簡潔。
conditions = [c1,c2,..., c_N]
if all(conditions):
# DO THIS
else:
# DO THIS
到此,相信大家對“Python any()和all()函數怎么用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。