本文主要是介绍Python区间库python-intervals,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前阵项目有个范围需求,最开始用的range,但是没法处理连续的。然后搜了一下果然有轮子,不过最开始搜中文搜到的大多是interval这个库,
pypi地址:https://pypi.org/project/interval/#description。
链接的官网都打不开了,文档啥的也没了,而且实测再Python3下无限区间有点问题。
接着又搜到python-intervals这个库,这个基本没啥问题了,Python支持的挺好,文档也齐全。
安装和基本用法文档里写了:
https://github.com/AlexandreDecan/python-intervals
简单记录个别的用法,就是开闭区间作为参数传递,不直接用封装好的接口。而封装好的接口实际上也是调用的底层的AtomicInterval.
AtomicInterval类实例化时接收四个参数:
left:左侧开闭(布尔型)
lower:下限
upper:上限
right:右侧开闭(布尔型)
#section = Interval(AtomicInterval(left, lower, upper, right))#实例:
from intervals import Interval,AtomicInterval
#生成一个左闭右开的2-4的区间
section = Interval(AtomicInterval(True, 1, 2, False))
section
Out[4]: [1,2)
AtomicInterval源码:
class AtomicInterval:"""This class represents an atomic interval.An atomic interval is a single interval, with a lower and upper bounds,and two (closed or open) boundaries."""__slots__ = ('_left', '_lower', '_upper', '_right')def __init__(self, left, lower, upper, right):"""Create an atomic interval.If a bound is set to infinity (regardless of its sign), the corresponding boundary willbe exclusive.:param left: Boolean indicating if left boundary is inclusive (True) or exclusive (False).:param lower: value of the lower bound.:param upper: value of the upper bound.:param right: Boolean indicating if right boundary is inclusive (True) or exclusive (False)."""self._left = left if lower not in [inf, -inf] else OPENself._lower = lowerself._upper = upperself._right = right if upper not in [inf, -inf] else OPENif self.is_empty():self._left = OPENself._lower = infself._upper = -infself._right = OPEN
这篇关于Python区间库python-intervals的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!