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

时间:2018-04-25 15:01:16

标签: python python-3.x math intersection set-theory

我需要找出两个数组之间是否有任何交叉点,其中包含起始值和结束值(此https://en.wikipedia.org/wiki/Intersection_(set_theory)上的wiki)。例如(仅少数情况):

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

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

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

1 个答案:

答案 0 :(得分:3)

只是测试界限:

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是项目的集合,而不是以tuple开头/停止的值范围,因此可能存在一些混淆。

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

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