首頁 > 後端開發 > Python教學 > Python 的「any」和「all」函數如何運作,為什麼我的元組比較失敗?

Python 的「any」和「all」函數如何運作,為什麼我的元組比較失敗?

Mary-Kate Olsen
發布: 2024-12-11 04:35:13
原創
1009 人瀏覽過

How Do Python's `any` and `all` Functions Work, and Why Did My Comparison of Tuples Fail?

理解Python的any和所有函數的行為

Python的any和all提供了方便的方法來評估可迭代中多個元素的真實性。如果任何元素為 True,則 any 傳回 True,而僅當所有元素為 True 時,all 才會傳回 True。

any 與all

直觀上,any 可以視覺化為一系列邏輯OR 運算子(||),以及全部作為一系列邏輯AND 運算符(&& )。這種理解有助於闡明它們的功能:

  • 任意: 至少有一個 Truthy 元素會產生 True 回傳值。空的迭代計算結果為 False。
  • all: 只有當所有元素均為 Truthy 時,所有元素都會傳回 True。同樣,空的迭代結果為 True。

短路

所有的一個重要方面是它們的短路行為。他們按順序評估元素,直到確定結果。這種最佳化可以防止對整個迭代進行不必要的遍歷。

給定範例中的應用程式

在提供的範例中,我們的目標是比較元組以確定是否有任何值不同,並且在這種情況下列印True。預期輸出應為 [False, True, False]。然而實際得到的結果是[False,False,False]。這種差異是由所使用的表達式引起的:

[any(x) and not all(x) for x in zip(*d['Drd2'])]
登入後複製

僅當元組中至少有一個元素為True 但並非所有元素均為True 時,方括號內的表達式才計算為True。在提供的情況下,沒有任何元組包含此類值。因此,結果是錯誤的 [False, False, False]。

正確實現

要實現預期的行為,可以使用以下表達式:

[x[0] != x[1] for x in zip(*d['Drd2'])]
登入後複製

此表達式直接比較每個元組的第一個和第二個元素,如果不同則傳回True。結果,將獲得所需的輸出 [False, True, False]。

以上是Python 的「any」和「all」函數如何運作,為什麼我的元組比較失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板