通过每个中的两个值检查两组的交集
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]
我需要查明两个具有起始值和结束值的数组之间是否存在任何交集(此 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]