如何准确测试 Python 列表中多个值的成员资格?

Susan Sarandon
发布: 2024-10-28 18:32:29
原创
973 人浏览过

How to Accurately Test for the Membership of Multiple Values in a Python List?

测试 Python 列表中多个值的成员资格

在 Python 中,使用 'in' 测试列表中多个值的成员资格运算符可能会导致意想不到的结果。考虑以下示例:

'a','b' in ['b', 'a', 'foo', 'bar']
('a', True)
登录后复制

结果 'a', True 表示列表中存在 'a',但它不指定 'b' 是否也存在。这是因为 Python 将 'in' 表达式视为一个元组,从而产生如上所示的输出。

要准确检查列表中是否同时存在 'a' 和 'b',您可以使用以下命令方法:

all(x in ['b', 'a', 'foo', 'bar'] for x in ['a', 'b'])
True
登录后复制

这个表达式确保列表 ['a', 'b'] 中的每个元素都包含在容器 ['b', 'a', 'foo', 'bar' 中]。如果任何元素不存在,表达式将返回 False。

替代选项

除了 'all' 函数之外,还有其他方法来执行此检查,但它们可能不如“全部”方法那么通用。

  • 集合交集:集合可用于使用“issubset”方法测试成员资格。但是,集合只能包含可哈希元素,这限制了它们对某些类型数据的适用性。
  • 生成器表达式:生成器表达式可用于执行与“all”相同的操作,但它可能无法有效地处理所有类型的输入。

速度注意事项

在某些情况下,子集测试可能比“全部”更快方法,特别是当容器和测试物品较小时。然而,总体速度差异不足以证明子集测试的压倒性使用是合理的。

需要注意的是,“in”的行为取决于左侧参数的类型。例如,使用带有字符串的“in”将连接值而不是测试成员资格。

选择测试列表中多个值的成员资格的最佳方法取决于具体要求、涉及的数据类型,以及性能考虑因素。

以上是如何准确测试 Python 列表中多个值的成员资格?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!