在 Python 中,确定一个列表中的元素是否存在于另一个列表中对于各种数据操作任务至关重要。本文探讨了测试这种重叠的不同方法,评估其效率并提供最佳实践。
1。生成器表达式
<code class="python">any(i in a for i in b)</code>
此方法迭代一个列表并检查另一个列表中的成员资格,如果找到匹配则返回 True。其时间复杂度为 O(n),其中 n 是较大列表的长度。
2。集合交集
<code class="python">bool(set(a) & set(b))</code>
此方法将两个列表转换为集合并找到它们的交集。如果交集非空,则返回 True。最坏情况的时间复杂度为 O(n m),其中 n 和 m 是列表的长度。
3。混合集合交集
<code class="python">a = set(a) any(i in a for i in b)</code>
此方法仅将一个列表转换为集合,并迭代另一个列表,检查集合成员资格。它避免了中间集合的创建,使其比传统集合交集更快。
4. Isdisjoint 方法
<code class="python">not set(a).isdisjoint(b)</code>
此方法使用冻结集合的 isdisjoint 方法来确定它们是否有任何公共元素。如果不存在,结果为 False;
最坏情况:
在大多数情况下,不相交方法是最快的,因为它受益于恒定时间集成员资格检查。
生成器表达式的最佳情况:
要考虑的因素:
以上是如何在 Python 中检查一个列表中的元素是否与另一个列表重叠?的详细内容。更多信息请关注PHP中文网其他相关文章!