我正在执行该类型的多次迭代:

masterSet=masterSet.union(setA)

随着集合的增加,执行这些操作所需的时间也越来越长(我想这是人们所期望的)。

我希望花时间检查setA的每个元素是否已经在masterSet中?

我的问题是,如果我知道masterSet尚未包含setA中的任何元素,我可以更快地这样做吗?

[更新]

鉴于这个问题仍在引起人们的关注,我想我将从下面的评论和答案中澄清一些事情:

当进行迭代时,虽然知道很多迭代,但 setAmasterSet有所不同,因为它的构造方式(无需处理任何检查),但是有几次迭代我需要进行唯一性检查。

我想知道是否有一种方法可以“告诉” masterSet.union()过程,使其不打扰唯一性检查,因为我知道这与masterSet不同,只需添加这些元素即可,他们很快相信程序员的断言是明确的。 Perhpas通过调用一些不同的“.unionWithDistinctSet()”过程或某些东西。

我认为响应表明这是不可能的(无论如何,实际上设置操作应该足够快),但是使用masterSet.update(setA)而不是union还是更快。

我已经接受了最明确的答复,解决了我当时遇到的问题并继续生活,但是仍然想听听我假设的.unionWithDistinctSet()是否可能存在?

最佳答案

您可以使用set.update来更新您的母版集。这样可以节省所有时间分配新集的时间,因此它应该比set.union快一点……

>>> s = set(range(3))
>>> s.update(range(4))
>>> s
set([0, 1, 2, 3])

当然,如果要循环执行此操作:
masterSet = set()
for setA in iterable:
    masterSet = masterSet.union(setA)

您可以通过执行以下操作来提高性能:
masterSet = set().union(*iterable)

最终,集合的成员资格测试为O(1)(在一般情况下),因此测试元素是否已包含在集合中对性能的影响并不大。

07-28 07:56