成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

十分鐘學會 Python any() 和 all() 函數

開發
Python有很多很有用的內建函數,今天就講all()和any()這兩個函數:這兩個函數的參數都是iterable,也就是為list或者tuple。

回想下,在 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() 函數來檢查字符串中是否有任何數字。讓我們把步驟寫下來:

  1. 檢查:字符串中是否有任何數字
  2. 遍歷字符串以訪問字符串中的每個字符
  3. 通過調用 isdigit() 方法檢查每個字符是否是數字
  4. 如果被測字符是數字,則 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 個條件 c1、c2、c3...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 個條件 c1、c2、c3...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

總結

希望本文能幫助你理解 Python 中的 any() 和 all() 函數。

責任編輯:華軒 來源: 哈希編程
相關推薦

2016-12-22 21:47:04

SEDLinuxUnix

2023-11-09 14:44:27

Docker鏡像容器

2012-07-10 01:22:32

PythonPython教程

2019-04-01 14:59:56

負載均衡服務器網絡

2020-12-17 06:48:21

SQLkafkaMySQL

2019-09-16 09:14:51

2015-09-06 09:22:24

框架搭建快速高效app

2024-05-13 09:28:43

Flink SQL大數據

2023-11-30 10:21:48

虛擬列表虛擬列表工具庫

2023-04-12 08:21:30

ChatGPTQQDiscord

2021-11-28 22:16:01

Go語言工具

2019-08-13 09:11:26

2024-06-19 09:58:29

2021-09-07 09:40:20

Spark大數據引擎

2022-06-16 07:31:41

Web組件封裝HTML 標簽

2023-04-12 11:18:51

甘特圖前端

2022-03-23 09:32:38

微服務容器Kubernetes

2023-10-07 13:13:24

機器學習模型數據

2025-04-30 09:37:07

2020-12-11 09:40:10

DevOpsCICD
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美日韩一区二区 | 国产成人精品免费 | 日韩欧美亚洲综合 | 国产亚洲人成a在线v网站 | 欧美激情亚洲天堂 | 五月免费视频 | 日韩视频三区 | 男女搞网站| 在线欧美亚洲 | 久久中文字幕一区 | 欧美成人a∨高清免费观看 91伊人 | 成人精品一区 | av黄色片在线观看 | 九九在线视频 | 久在线| 精品国产乱码久久久久久a丨 | 激情欧美一区二区三区中文字幕 | 日本超碰| 日本福利片 | 欧美日韩午夜精品 | 精品视频久久久久久 | 亚洲毛片 | 欧美国产日韩一区 | 五月香婷婷 | 视频一区二区三区在线观看 | 国产一区二区三区在线看 | 精国产品一区二区三区四季综 | 亚洲精品成人av久久 | 日韩欧美在线播放 | 欧美一级在线 | av在线免费观看网站 | 中文字幕 在线观看 | 看羞羞视频| 亚洲网站在线播放 | 毛片一级片 | 久久久久久亚洲精品 | 激情一区二区三区 | 国产精品一二三区 | 成人精品国产免费网站 | a精品视频 | 国精产品一区二区三区 |