Python数值区间处理-interval库的快速⼊门
使⽤ Python 进⾏数据处理的时候,常常会遇到判断⼀个数是否在⼀个区间内的操作。我们可以使⽤ if else 进⾏判断,但是,既然使⽤了Python,那我们当然是想⼀下有没有现成的轮⼦可以⽤。事实上,我们可以是⽤ interval 这⼀个库来完成我们需要的操作。
区间判断基础
最基础的区间判断操作就是先创建⼀个区间⼏个,然后使⽤ in 来判断⼀个数是否存在于区间之内。代码如下:
from interval import Interval
zoom_2_5 = Interval(2,5)
print(zoom_2_5)
>>[2..5]
print(2in zoom_2_5)
>>True
print(6in zoom_2_5)
>>False
我们可以从上⾯的代码看到,我们先使⽤ Interval 创建⼀个集合,然后将我们想要⽐较的数⽤ in 即可得到结果。但是,我们都知道,我们的集合其实是有分开区间和闭区间的,上⾯的代码中,创建的是 [2, 5] 的区间集合,那么假如我们想要创建⼀个如 (2, 5] 的集合,应该如何呢?请看下⾯的代码:
zoom_o2_5 = Interval(2,5, lower_closed=False)
print(zoom_o2_5)
>>(2..5]
print(2in zoom_o2_5)
>>False
zoom_o2_o5 = Interval(2,5, closed=False)
print(zoom_o2_o5)
>>(2..5)
从上⾯的代码可以看到,在使⽤ Interval 创建集合的时候,使⽤ lower_closed 参数,我们可以将集合区间下限设置为⾮闭区间,也就是开区间,这样我们⽐较 2 是否在这个区间⾥的时候,返回的结果是 False。类似的,如果想区间上限设置为开区间,可以将 upper_closed 设置为 False,如果想直接创建⼀个开区间,那么久可以直接设置 closed 为 False。
集合的操作
Interval 有三种对集合区间的操作⽅法,分别是 join overlaps adjacent_to ,以下将演⽰以下这三个⽅法的⽤法:
zoom_1_3 = Interval(1,3)
zoom_1_5 = Interval(1,5)
zoom_o3_5 = Interval(3,5, lower_closed=False)
# join 合并两个连续的区间集合
print(zoom_1_3.join(zoom_1_5))
>>[1..5]
# overlaps 判断两个区间是否重复
print(zoom_1_3.overlaps(zoom_1_5))
python新手快速入门>>True
print(zoom_1_3.overlaps(zoom_o3_5))
>>False
# adjacent_to 判断区间是否相邻⽐重复
print(zoom_1_3.adjacent_to(zoom_o3_5))
>>True
⼩结
interval 库还提供了 IntervalSet 包,⾥⾯提供了对多个 Interval 的操作,碍于篇幅的关系以及在实际应⽤中场景的不同具体⽤法也不⼀样,这⾥就不赘述了,向更深⼊了解可以使⽤ Ipython 进⼊交互模式然后使⽤ help() ⽅法来查看具体不同⽅法的⽤法,这个库⾥⾯都提供了详细的说明。本⽂的介绍就到这⾥,希望对你有帮助。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。