首页 > 解决方案 > 在 Python 中创建所有东西的集合

问题描述

我正在寻找 set.intersection 的基本案例

我有一个算法,它接受一个集合列表,列表的长度可以是 0、1、2、3 等等。给定这个列表,它将返回列表中所有集合的交集。然后,返回的交叉点将被进一步用于与更多事物相交。代码要点及其用法如下所示:

def intersect(list_of_sets):
    return set.intersection(*list_of_sets)

ss1 = intersect(list_of_sets)
# a few moments later . . . 
# . . .
ss2 = set.intersection(some_other_set, ss1)

因此,当 list_of_sets 是一个空列表时,就会出现问题。这很麻烦,因为它破坏了我的代码。一个优雅的解决方案是重写代码如下:

def intersect(list_of_sets):
    return set.intersection(*[list_of_sets, set.EVERYTHING])

ss1 = intersect(list_of_sets)
# a few moments later . . . 
# . . .
ss2 = set.intersection(some_other_set, ss1)

这样,空列表下 intersect 的返回值将被设置为 set.EVERYTHING,它与 some_other_set 正确相交以根据需要形成 ss2。

我知道在 python 中,浮点数和整数具有最大值,例如 INF 等,是否有类似的集合?添加的“基本情况”是“0”,集合并集的“基本情况”是空集,我需要一个集合交集的基本情况,即所有集合。它存在吗?

标签: pythonsetintersection

解决方案


推荐阅读