前言
使用python进行数据处理的时候,有时会遇到判断一个数是否在一个区间内的 操作,我们可以使用if else进行判断,但是,既然使用了python,那我们当然是想找一下有没有现成的东西可以用,事实上,可以用interval这个库来完成我们目前需要的操作。

区间判断
最基础的区间判断操作就是先创建一个区间,然后使用in来判断一个数是否存在于区间之内

from interval import Interval
 #创建实例
 zoom_2_5 = Interval(2,5)
 print(zoom_2_5)
 #左右边界均包含在内,为全闭区间
 #[2…5]
 print(2 in zoom_2_5)
 #True
 print(6 in zoom_2_5)
 #False


可以从上面的代码中看到,我们先使用interval创建一个集合,然后将我们想要比较的数用in即可得到结果,但是,我们都知道,我们的集合其实是有分开区间和闭区间的,上面的代码中,创建的是[2,5]的区间集合,下面我们讲一下如何创建开区间

from interval import Interval
 #创建一个左半开区间
 zoom_2_5 = Interval(2,5,lower_closed = False)
 print(zoom_2_5)
 #(2…5]
 print(2 in zoom_2_5)
 #False
 #创建一个右半开区间
 zoom_1_5 = Interval(1,5,upper_closed = False )
 print(zoom_1_5)
 #[1…5)
 print(1 in zoom_1_5)
 #True


从上面的代码中可以看到,在使用Interval创建区间的时候,使用lower_closed参数,我们可以将区间下限设置为一个开区间,这样比较2是否在这个区间内的时候,返回的结果是False,类似的,如果区间上限设置为开区间,可以将upper_closed设置为False,如果想直接创建一个开区间,可以直接设置closed为False

区间合并,判断是否交叉重复及是否比邻
interval有三种区间的操作方法,分别是join,overtaps,adjacent_to,以下将演示这三个方法的用法

from interval import Interval
zoom_1_3 = Interval(1,3,lower_closed=False)
 zoom_3_5 = Interval(3,5,lower_closed=False)
 #合并
 zoom_1_5 = zoom_1_3.join(zoom_3_5)
 print(zoom_1_5)
 zoom_1_3 = Interval(1,3,upper_closed=False)
 zoom_3_5 = Interval(3,5,upper_closed=False)
 #判断交集
 print(zoom_1_3.overlaps(zoom_3_5))
 zoom_0_1 = Interval(0, 1, upper_closed=False)
 zoom_1_3 = Interval(1, 3, lower_closed=False)
 zoom_1_3_ = Interval(1, 3)
 #测试是否比邻
 print(zoom_0_1.adjacent_to(zoom_1_3))#False
 #反向测试
 print(zoom_1_3.adjacent_to(zoom_0_1))#False
 #zoom_0_1 和 zoom_1_3_ 比邻
 print(zoom_0_1.adjacent_to(zoom_1_3_))#True


#比邻是指:1、两个区间相邻的边界值相等 2、同时这两个边界一个为开区间,一个为闭区间,即两个区间没有交集
区间解释:
数学区间是指某一范围。分类有全开区间、全闭区间、半开半闭区间、半闭半开区间。
全开区间:表示符号为( ),指不包括端点的区间,例如(2,4),表示实数范围内大于2小于4范围内的实数;
全闭区间:表示符号为[ ],指包括端点的区间,例如[2,4],表示实数范围内大于等于2小于等于4范围内的实数;
半开半闭区间:表示符号为( ],指不包括最小数据的端点,而包括最大数据的端点的区间,例如(2,4],表示实数范围内大于2小于等于4范围内的实数;
半闭半开区间:表示符号为[ ),指包括最小数据的端点,而不包括最大数据的端点的区间,例如[2,4),表示实数范围内大于等于2小于4范围内的实数.

python取区间上的数值 python数据区间_python取区间上的数值

作者:乂尤先生