我需要找出两个数组之间是否有任何交叉点,其中包含起始值和结束值(此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中这样做?这有什么工具吗? 感谢
答案 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]