python - 确定多组整数的交集是否非空的最快方法是什么?

标签 python math set

我是本科生数学小组的成员。我有一组唯一整数的集合(集合的长度不同)。我经常需要确定集合中所有集合的交集是否非空。我不需要知道交集是什么,只需要知道它是否非空。我必须经常这样做。我在时间复杂度和制定高效算法方面没有太多经验。最快的方法是什么?

我已经包含了迄今为止所拥有的内容。速度慢得可怕。如果 S 有 15 组以上,那么脚本将永远持续下去。

# S is an array of integers
def intersects(S):
    if S == []:
        return True # if S is empty, I deem the intersection nonempty for reasons
    A = S[0]
    for i in range(1, len(S)):
        B = S[i]
        A = get_intersection(A, B) # returns intersection of A and B
        if A == []:
            return False
    return True

最佳答案

集合交集可以接受多个集合

S[0].intersection(*S[1:])

(甚至只是set.intersection(*S))

例如

>>> s1 = set([1,2,3])
>>> s2 = 2,3,4
>>> s3 = 3,4,5
>>> s1.intersection(s2,s3)
set([3])

关于python - 确定多组整数的交集是否非空的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55682754/

相关文章:

python - BeautifulSoup 用 "N/A"填充缺失信息不起作用

python - 为什么 -0.0 与 0.0 不同?

database - 用于查找具有相似位值的附近键的数据结构

objective-c - 我的帕斯卡三角形有什么问题?

C++:我的新节点在哪里?

python - 在 python 脚本中更改为 sudo 用户

python - 如何在Python中包含宏?

java - 集合表示法的特定 Java 正则表达式

c++ - std::set 中索引处的元素?

python - 在 Django 中查询与午夜重叠的多个营业时间范围