本文共 1640 字,大约阅读时间需要 5 分钟。
前阵项目有个范围需求,最开始用的range,但是没法处理连续的。然后搜了一下果然有轮子,不过最开始搜中文搜到的大多是interval这个库,
地址:。
链接的官网都打不开了,文档啥的也没了,而且实测再Python3下无限区间有点问题。
接着又搜到python-intervals这个库,这个基本没啥问题了,Python支持的挺好,文档也齐全。
安装和基本用法文档里写了:
简单记录个别的用法,就是开闭区间作为参数传递,不直接用封装好的接口。而封装好的接口实际上也是调用的底层的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))sectionOut[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 will be 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 OPEN self._lower = lower self._upper = upper self._right = right if upper not in [inf, -inf] else OPEN if self.is_empty(): self._left = OPEN self._lower = inf self._upper = -inf self._right = OPEN
转载地址:http://ckxws.baihongyu.com/