多个类射程物体的便利功能
multirange的Python项目详细描述
多个类似范围的对象的便利功能
python的基本包>;=3.3
https://pypi.python.org/pypi/multirange/
状态
代码可以工作,但不稳定:可能会添加功能 或重新组织,只要主版本等于0 (参见http://semver.org/spec/v2.0.0.html,第4项)。 提示:当你提供反馈时,稳定性增长得更快。
多范围功能尚未完成;大多数操作涉及 缺少多个范围。
简介
python的这个库>;=3.3为多个 类似范围的对象(对应于有限的连续整数集)。
它有三种操作:
- operations involving few range objects
- operations involving an iterable of range objects (range iterable)
- operations involving so-called multiranges; we define a multirange as an iterable of ranges, which have no mutual overlap, which are not adjacent, and which are ordered increasingly
示例
>>> import multirange as mr >>> mr.normalize(range(5, 0)) >>> mr.overlap(range(0, 10), range(5, 15)) range(5, 10) >>> mr.is_disjunct([range(8, 10), range(0, 2), range(2, 4)]) True >>> mr.covering_all([range(8, 10), range(0, 2), range(2, 4)]) range(0, 10) >>> mr.contains(range(0, 10), range(0, 5)) True >>> mr.is_covered_by([range(8, 10), range(0, 2)], range(0, 20)) True >>> mr.intermediate(range(10, 15), range(0, 5)) range(5, 10) >>> list(mr.gaps([range(4, 6), range(6, 7), range(8, 10), range(0, 3)])) [range(3, 4), range(7, 8)] >>> mr.difference(range(1, 9), range(2, 3)) (range(1, 2), range(3, 9)) >>> list(mr.normalize_multi([None, range(0, 5), range(5, 7), range(8, 20)])) [range(0, 7), range(8, 20)] >>> list(mr.difference_one_multi(range(0, 10), [range(-2, 2), range(4, 5)])) [range(2, 4), range(5, 10)]
请参考单元测试以获取更多示例。