Python中计算两个集合的差和交集的最有效方法



假设我们有两个集合s1s2

我需要基于这两个集合的三个不同集合:

  1. s1中存在但在s2中不存在的元素的集合
  2. s2中存在但在s1中不存在的元素的集合
  3. 同时存在于s1s2中的元素集

这些可以很容易地计算如下:

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
o1 = s1 - s2
o2 = s2 - s1
o3 = s1 & s2

有没有一种方法可以更有效地计算这些集合?我认为不同的集合操作有多个共同的内部处理步骤,因此可能存在冗余。

考虑到这些操作是在C语言的核心部分实现的,我认为在自定义编写的代码中几乎没有什么可以加快这些操作的速度。

但是。。。

由于s1 - s2s1 - (s1 & s2)相同,您可以先计算o3,然后在差运算中使用这个较小的集合:

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
o3 = s1 & s2
o1 = s1 - o3
o2 = s2 - o3

我怀疑这会有多大区别,因为集合查找和插入是O(1(,但可以想象,对较小集合的操作仍然稍微快一些。

最新更新