在 Python 中,确定一个列表中的元素是否存在于另一个列表中对于各种数据操作任务至关重要。本文探讨了测试这种重叠的不同方法,评估其效率并提供最佳实践。
1。生成器表达式
any(i in a for i in b)
此方法迭代一个列表并检查另一个列表中的成员资格,如果匹配则返回 True成立。其时间复杂度为 O(n),其中 n 是较大列表的长度。
2。集合交集
bool(set(a) & set(b))
此方法将两个列表转换为集合并找到它们的交集。如果交集非空,则返回 True。最坏情况的时间复杂度为 O(n m),其中 n 和 m 是列表的长度。
3。混合集交集
a = set(a)
any(i in a for i in b)
此方法仅将一个列表转换为集合,并迭代另一个列表,检查集合成员资格。它避免了中间集合的创建,使其比传统集合交集更快。
4。 Isdisjoint 方法
not set(a).isdisjoint(b)
该方法使用冻结集合的 isdisjoint 方法来确定它们是否有公共元素。如果不存在,结果为 False;
最坏情况:
大多数情况下,不相交方法是最快的,因为它受益于恒定时间集成员资格检查。
生成器表达式的最佳情况:
需要考虑的因素:
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3