日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

<meter id="smvta"></meter>

    學無先后,達者為師

    網站首頁 編程語言 正文

    Python中的?any()?函數和?all()?函數_python

    作者:pythontip? ? 更新時間: 2022-06-15 編程語言

    回想下,在 Python 中編程時,你是否曾經需要檢查某個可迭代對象(如列表)中的任何元素或所有元素的計算結果是否為True

    假設,我們要判斷數字列表a的所有數字是否都大于0,此時你估計會這么干:

    a = [1, 2, 3, 4]
    
    
    def is_big_0(l):
        # 判斷列表l的所有數字是否大于,如果大于0則返回True,否則返回False
        for i in l:
            if i <= 0:
                return False
        return True
    
    
    print(a)
    

    停頓幾秒,想一想,假設下次我們要判斷其他條件,如每個元素都是偶數或奇數?難道每次都要寫一個函數然后for循環遍歷嗎?

    其實python中有兩個神奇的函數any()all(),他們可以快速完成上面類似的任務!

    接下來,我們將分享 Python 的?any()?和?all()?函數,并使用簡單的示例來了解它們的工作原理。

    Python 中的布爾數據類型

    在學習?any()?和?all()?之前,先快速回顧一下 Python 中的布爾數據類型。你可以在任何 Python 對象上調用?bool()?以獲取其真假值。如下代碼示例:

    # None 的真假值是 False
    print(bool(None))
    # 輸出 False
    
    # 一個空字符串("")的真假值是 False
    print(bool(""))
    # 輸出 False
    
    # 一個空字符串或任何可迭代對象的真假值是 False
    print(bool([]))
    # 輸出 False
    
    # 0 {int (0), float (0.0) 和 complex (0j)} 的真假值是 False
    print(bool(0))
    # 輸出 False
    

    如上面的代碼所示,可知:

    • None?的真假值為?False
    • 數字零(0)——整數、浮點數和?0?的復數表示——都是?False
    • 所有空的可迭代對象(如列表、元組和字符串)的真假值為?False

    也就是說,所有非零值和非空可迭代對象都為True,這是相當直觀的。

    請記住:所有非零值和非空可迭代對象都為True,這是相當直觀的!

    如何在 Python 中使用 any() 函數

    讓我們了解?any()?函數的語法,先看一些簡單的例子,之后再看更有用的例子。

    ?? 語法?:any(iterable)

    • 對于迭代中的任何?x,如果?bool(x)?是?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() 函數檢查字符串中的數字

    現在讓我們使用?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
        
     # 本質上,循環遍歷迭代,對每一項進行操作,然后返回操作的結果。
    

    如下面的代碼片段所示,我們的示例字符串?coding**is**cool**345?包含數字。

    因此,對字符串調用?any()?函數應該返回?True。我們使用列表推導式來根據字符是否為數字來獲取?True?和?False?值的列表。

    my_string = "coding**is**cool**345"
    # 列表推導
    are_there_digits = [char.isdigit() for char in my_string]
    # 調用any函數
    print(any(are_there_digits))
    
    # 輸出 True
    

    請注意?are_there_digits?是一個列表,其項數與字符串的長度一樣多。

    對于字符串中的每個字符,都有一個對應的真假值——如果字符是數字,則為?True,如果字符不是數字,則為?False,如下所示:

    my_string = "coding**is**cool**345"
    # 列表推導
    are_there_digits = [char.isdigit() for char in my_string]
    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]
    

    如何用any()函數檢查字符串中的字母

    讓我們再舉一個類似的例子。這一次,讓我們檢查字符串中的字母。

    被測試的字符串***456278)))是不包含字母的 -- 調用?any()?會按預期返回?False。對于字符串中的每個字符,調用?isalpha()?方法檢查它是否是一個字母。

    my_string = "***456278)))"
    num = [char.isalpha() for char in my_string]
    print(any(num))
    
    # Output False
    

    如何用any()函數將多個條件與邏輯 OR 組合在一起

    假設你有 N 個條件?c1c2c3...cN,考慮下面的偽代碼:

    if c1 or c2 or ... c_(N-1) or CN:
        # DO THIS
        pass
    else:
        # DO THIS
        pass
    

    你現在可以將所有這些條件收集在一個可迭代對象中,例如列表或元組,然后對該可迭代對象調用?any()?以檢查一個或多個條件是否為?True,如下所示。是不是很簡單? ??

    conditions = [c1, c2, ..., c_N]
    if any(conditions):
        # DO THIS
        pass
    else:
        # DO THIS
        pass
    

    如何使用?all()?函數

    讓我們從?all()?函數的語法開始:

    ?? 語法:all(iterable)

    • 如果?bool(x)?對于可迭代對象中的所有值?x?為?True,則返回?True
    • 如果可迭代對象為空,則返回?True

    all()?函數接受一個可迭代對象作為參數,僅當可迭代對象中的所有項的計算結果為?True,或可迭代對象為空時才返回?True。在所有其他情況下,all()?函數返回?False

    如何用all()函數檢查字符串中的字母

    讓我們以類似的例子來檢查字符串的某些特征。

    測試字符串?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()函數檢查字符串中的數字

    現在讓我們使用?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]
    

    如何用Pythonall()函數用邏輯 AND 組合多個條件

    假設你有 N 個條件?c1c2c3...cN,考慮下面的偽代碼:

    if c1 and c2 and ... c_(N-1) and CN:
        # DO THIS
        pass
    else:
        # DO THIS
        pass
    

    你可以使用?all()?函數通過收集迭代中的條件,然后在迭代上調用?all()?函數來使這一切變得更加簡潔。

    conditions = [c1, c2, ..., c_N]
    
    if all(conditions):
        # DO THIS
        pass
    else:
        # DO THIS
        pass

    原文鏈接:https://juejin.cn/post/7084830431786303525

    欄目分類
    最近更新