python区间_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(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范围内的实数.

[a,b]

a<=x<=b

取值包括a,b

(a,b)

a

取值不包括a,b

[a,b)

a<=x

取值包括a,不包括b

(a,b]

a

取值不包括a,包括b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值