列表中多個值的成員資格測試
問題:
問題:如何進行一次測試如果多個值是Python中列表的成員?預期結果是傳回布林值,指示每個值的成員資格,但目前方法會產生意外的輸出。
解釋:提供的程式碼片段,' ['b', 'a', 'foo', 'bar'] 中的a','b ' 未按預期運行,因為Python 將其解釋為元組而不是單一值的成員資格測試。
答案:<code class="python">all(x in ['b', 'a', 'foo', 'bar'] for x in ['a', 'b'])</code>
如果所有值都在清單中,則傳回True第二個清單是第一個清單的成員,否則為False。
其他選項:
<code class="python">set(['a', 'b']).issubset(set(['a', 'b', 'foo', 'bar'])) {'a', 'b'} <= {'a', 'b', 'foo', 'bar'}</code>
使用集合:
當清單中的元素可雜湊時,此方法效果很好,但如果清單很大,則效率可能較低。
速度測試:基準結果顯示子集測試(使用集合)通常比all 表達式更快,但差異並不顯著,除非列表很小並且子集運算與集合一起使用。但是,如果清單中的元素不可散列或清單很大,則 all 表達式可能會更有效。
結論:使用 all 表達式通常是測試清單中多個值的好習慣,特別是當元素不可散列並且需要考慮效率時。如果元素是可散列的且清單很小,則子集測試可以提供輕微的速度優勢。以上是如何測試 Python 清單中多個值的成員資格?的詳細內容。更多資訊請關注PHP中文網其他相關文章!