我们常常会用到区间,例如:
1,判断一个数,是不是属于这个区间?
2,两个区间的交集计算?
等等。
下面,来学习interval这个区间库:
一、基本使用:
from interval import Interval
zoom_2_5 = Interval(2, 5)
print(zoom_2_5)
print(2.5 in zoom_2_5)
print(6 in zoom_2_5)
分别返回True和False
这里,已表达区间的定义、判断是否属于两个用法。
关于时间区间:
s1 = datetime.datetime.strptime("2019-03-07 09:30:00", '%Y-%m-%d %H:%M:%S')
s2 = datetime.datetime.strptime("2019-03-07 11:30:00", '%Y-%m-%d %H:%M:%S')
s3 = Interval(s1, s2)
print( datetime.datetime.now() in s3)
二、闭区间、半天半闭区间
正常情况下定义的,是一个开区间,即,包含边界。我们也可以定义闭区间和半开半闭区间。
from intervalimport Interval
#默认为开区间
zoom_o2_5=Interval(2,5)
print(zoom_o2_5)
print(2 in zoom_o2_5) #返回 True
print(5 in zoom_o2_5) #返回 True
print("--------------")
#半开半闭区间
zoom_o2_5 = Interval(2, 5, lower_closed=False)
print(zoom_o2_5)
print(2 in zoom_o2_5) #返回 False
print(5 in zoom_o2_5) #返回 True
print("--------------")
#闭区间
zoom_o2_5 = Interval(2, 5, closed=False)
print(zoom_o2_5)
print(2 in zoom_o2_5) #返回 False
print(5 in zoom_o2_5) #返回 False
三、判断两个区间是否重复
a=Interval(1,5)
b=Interval(4,10)
c=Interval(9,33)
print(a.overlaps(b)) #返回 True
print(a.overlaps(c)) # 返回False
四、合并两个有交集的区间
对于无交集的区间是无法合并的。
a=Interval(1,5)
b=Interval(4,10)
print(a.join(b))
返回[1..10]
五、判断两个区间是否不重叠的毗邻
a=Interval(1,5)
print(a)
b=Interval(5,10, lower_closed=False)
print(b)
print(a.adjacent_to(b))
返回True
六、构造求交集函数:
def chongdie(a,b):
x=[]
x.append(a.upper_bound)
x.append(b.lower_bound)
x.append(a.lower_bound)
x.append(b.upper_bound)
x.sort()
return Interval(x[1],x[2])
网友评论