Python 数值区间处理_对interval 库的快速入门详解

作者:SpeculateCat 时间:2022-08-12 00:18:53 

使用 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] 的区间集合,那么假如我们想要创建一个如 (2, 5] 的集合,应该如何呢?

请看下面的代码:


zoom_o2_5 = Interval(2, 5, lower_closed=False)
print(zoom_o2_5)
>> (2..5]
print(2 in 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))
>> 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() 方法来查看具体不同方法的用法,这个库里面都提供了详细的说明。本文的介绍就到这里,希望对你有帮助。

来源:https://blog.csdn.net/weixin_37272286/article/details/81276110

标签:Python,interval
0
投稿

猜你喜欢

  • asp如何实时获知多少人在线?

    2010-05-18 18:34:00
  • linux下默认安装mysql数据库

    2011-03-08 09:24:00
  • Python实现为PDF大文件批量去除水印

    2023-04-14 19:59:04
  • 也谈access数据库的防下载保护

    2007-08-28 13:01:00
  • 细化解析:Mysql数据库对文件操作的封装

    2008-11-27 16:32:00
  • python图形界面教程Tkinter详解

    2021-01-08 04:27:47
  • asp如何获知Connection对象更多的信息?

    2009-11-23 20:53:00
  • Access2000迁移到Oracle9i要点

    2010-07-27 13:10:00
  • 如何做一个可以让人家申请使用的计数器?

    2010-07-11 21:17:00
  • 判定IE的各个版本

    2010-01-19 14:01:00
  • pytorch实现focal loss的两种方式小结

    2023-07-02 14:43:22
  • asp源码如何显示数据库字段的结构?

    2010-06-08 09:35:00
  • 如何使用数组来显示下拉菜单?

    2010-05-16 15:19:00
  • asp查询xml的代码实现无刷新 模糊查询

    2008-04-30 15:39:00
  • JS 去前后空格大全(IE9亲测)

    2013-08-22 13:01:43
  • DataReader深入解析:持续更新

    2023-07-11 06:24:08
  • 布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)

    2021-01-02 08:46:49
  • 如何编写高质量的Javascript代码

    2011-03-07 16:04:00
  • 模拟实现 Range 的 insertNode() 方法

    2010-11-30 21:39:00
  • css hack简易的“独享”与“交集”

    2008-08-31 20:17:00
  • asp之家 网络编程 m.aspxhome.com