列表中多个值的成员资格测试
问题:
如何进行一次测试如果多个值是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中文网其他相关文章!