首頁 >後端開發 >Python教學 >為什麼 [\'b\', \'a\', \'foo\', \'bar\']\' 中的 \'(\'a\', \'b\') 不作為需要檢查列表中的多個值?

為什麼 [\'b\', \'a\', \'foo\', \'bar\']\' 中的 \'(\'a\', \'b\') 不作為需要檢查列表中的多個值?

Linda Hamilton
Linda Hamilton原創
2024-11-01 05:52:02260瀏覽

Why Doesn't

如何驗證多個值屬於一個列表

問題:

我需要確定列表中是否存在多個值,但以下程式碼會產生意外的結果結果:

'a','b' in ['b', 'a', 'foo', 'bar']

為什麼這段程式碼沒有如預期運行,如何有效地檢查多個值的成員資格?

答案:

Python 將程式碼片段解釋為元組比較,而不是所需的清單成員資格測驗。若要正確測試是否存在多個值,請使用下列方法:

all(x in container for x in items)

其中容器是要測試的清單或其他序列,項目是包含要尋找的值的可迭代物件。

其他注意事項:

  • 速度測試: 上面提到的方法在大多數情況下表現良好,但將列表轉換為集合可能會產生更快的結果。然而,這種轉換可能並不總是值得的。基準測試顯示,速度優勢會根據輸入的大小和類型而變化。
  • 集合注意事項:集合可以加速可雜湊元素的包含檢查,但它們的建立需要記憶體開銷。生成器提供了一種替代方案,對於具有不可散列元素的大型資料集可以更加有效率。

結論:

all(x in 容器for x in items) 方法是一種通用且高效的解決方案,用於檢查清單或其他容器中多個值的成員資格。根據具體需求,轉換為集合或使用生成器可能會進一步優化效能。

以上是為什麼 [\'b\', \'a\', \'foo\', \'bar\']\' 中的 \'(\'a\', \'b\') 不作為需要檢查列表中的多個值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn