Python 的任何和所有函數如何運作
比較元組時,any() 和 all() 內建函數都會進入玩。它們的差異如下:
any()
any() 如果迭代中至少有一個元素為Truthy(即不是False、0、 '',等等)。
all()
all(),另一方面,只有在可迭代中的每個元素都是 Truthy 時才傳回 True。
理解用例
在程式碼片段中提供:
print [any(x) and not all(x) for x in zip(*d['Drd2'])]
zip(*d['Drd2']) 中的每個元組別都在any(x) 而不是all(x) 的上下文中進行評估。然而,意外的 [False, False, False] 輸出引發了問題。
錯誤解釋
根據任何和全部的真值表:
any(x) | all(x) | any(x) and not all(x) |
---|---|---|
True | False | True |
False | True | False |
True | True | False |
False | False | False |
在這種情況下,所有元組都由相同的數字(即True 值)組成,因此any(x) 始終是True,並且all(x) 也將為True。因此,any(x) 而不是 all(x) 應始終評估為 False,這不會反映在輸出中。
錯誤原因
錯誤所在錯誤地期望 (x[0] != x[1]) 是一個 Truthy 表達式。但是,當元組中的數字相等時(例如 (1, 1)),(x[0] != x[1]) 的計算結果為 False。
正確邏輯
要準確地確定元組中的任何值是否不同,您可以使用以下命令邏輯:
print [x[0] != x[1] for x in zip(*d['Drd2'])]
此表達式式按預期正確比較每個元組的相應元素以識別任何差異。
以上是Python 的 `any()` 和 `all()` 函數在比較元組時如何表現?的詳細內容。更多資訊請關注PHP中文網其他相關文章!