python中'set.intersection()'的算法是什么?

时间:2013-11-20 15:28:50

标签: python algorithm set intersection set-intersection

首先,我的目的是在两个已知集中随机获取一个元素。所以我的原始方法首先交叉两组。然后从相交集中随机拾取一个元素。但这是愚蠢的,因为我只需要一个元素而不是相交集。

所以我需要找到set.intersection()的算法。

我比较'set.intersection()'和'for {for {}}'方法之间的成本时间。 Set.intersection()比其他(100次)更快。所以使用'for {for {}}'来获取随机元素并不是一个明智的想法。

python中set.intersection()背后的算法是什么?

1 个答案:

答案 0 :(得分:9)

The algorithm如下:较小的集循环并且每个元素都被复制,这取决于它是否在更大的集合中找到。所以,它是C等价于

def intersect(a, b):
    if len(a) > len(b):
        a, b = b, a

    c = set()
    for x in a:
        if x in b:
            c.add(x)
    return c

(或:return set(x for x in a if x in b)。)