理解Python的any和所有函數的行為
Python的any和all提供了方便的方法來評估可迭代中多個元素的真實性。如果任何元素為 True,則 any 傳回 True,而僅當所有元素為 True 時,all 才會傳回 True。
any 與all
直觀上,any 可以視覺化為一系列邏輯OR 運算子(||),以及全部作為一系列邏輯AND 運算符(&& )。這種理解有助於闡明它們的功能:
短路
所有的一個重要方面是它們的短路行為。他們按順序評估元素,直到確定結果。這種最佳化可以防止對整個迭代進行不必要的遍歷。
給定範例中的應用程式
在提供的範例中,我們的目標是比較元組以確定是否有任何值不同,並且在這種情況下列印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中文網其他相關文章!