通过每个中的两个值检查两组的交集

Checking intersection of two sets by two values in each

我需要查明两个具有起始值和结束值的数组之间是否存在任何交集(此 https://en.wikipedia.org/wiki/Intersection_(set_theory) 上的 wiki)。例如(只是少数情况):

a = (10, float("inf"))
b = (8, float("inf"))

a = (10, 20)
b = (4, 25)

所以,b 包含 a。我怎样才能在 python 中做到这一点?有什么工具吗? 谢谢

只是测试边界:

def contains(a,b):
    return a[0]>=b[0] and a[1]<=b[1]

a = (10, 20)
b = (4, 25)

print(contains(a,b))

a = (10, float("inf"))
b = (8, float("inf"))

print(contains(a,b))

b = (80, float("inf"))

print(contains(a,b))

打印:

True
True
False

(因为上次测试使条件为假)

作为旁注,python set 是项目的集合,而不是 start/stop 和 tuple 的值范围,因此可能会造成一些混淆。

另请注意,您的示例令人困惑。如果你想要交集,而不是包含,定义一个像这样的相交方法:

def intersects(a,b):
    return a[0] <= b[1] and b[0] <= a[1]