说明
Python 教程正在修订中,欢迎加微信 sinbam 提供建议、纠错、催更。查看 更新日志。
Python 的 portion /ˈpɔːʃ(ə)n/ 库来提供间隔的数据结构和操作。portion 以前以 python-intervals 的形式分发,但 python-intervals 不再支持 Python 3.5+ 和新增加更新。经常用于定义数字、时间、时长等数据的范围,同时判断一个标量是否在此范围内,各个范围的交集、差集等集合计算等。
安装
pip install portion
更多参考:
https://github.com/AlexandreDecan/portion
https://pypi.org/project/portion
创建间隔对象
一般导入 portion 库时设置别名为 P,然后用 P 的方法创建具有一定开闭性质的区间间隔对象。
import portion as P
# 开区间,不包含两边
P.open(1, 2) # (1,2)
# 闭区间,包含两边
P.closed(1, 2) # [1,2]
# 左开左闭,1
P.openclosed(1, 2) # (1,2]
# 左闭右开,1<=x<2
P.closedopen(1, 2) # [1,2)
# 单一值
P.singleton(1) # [1]
# 空范围
P.empty() # ()
区间的边界可以是任意值,只要它们是可比较的,如字符和时间:
P.closed(1.2, 2.4)
# [1.2,2.4]
P.closed('a', 'z')
# ['a','z']
import datetime
P.closed(datetime.date(2011, 3, 15), datetime.date(2013, 10, 10))
# [datetime.date(2011, 3, 15),datetime.date(2013, 10, 10)]
使用 P.inf 和 -P.inf 作为上限或下限,支持无限和半无限间隔。 这两个对象支持与任何其他对象的比较。 当将无穷大用作下限或上限时,相应的边界会自动转换为开放边界。
P.inf > 'a', P.inf > 0, P.inf > True
# (True, True, True)
P.openclosed(-P.inf, 0)
# (-inf,0]
P.closed(-P.inf, P.inf) #