python: определить входит ли число/диапазон в диапазон от min до max и скорректировать диапазон

стоит 2 задачи

  1. есть число value и диапазон r = (min, max), требуется определить, попадает ли число в диапазон

  2. есть диапазон r1 = (min1, max1) и диапазон r2 = (min2, max2), требуется найти пересечение диапазонов

понятно что и первую и вторую задачу можно сделать через обычные проверки в лоб, типа

res = r[0] <= value <= r[1]

и

res = max(r1[0], r2[0]), min(r1[1], r2[1])
res = None if res[0] > res[1] else res

но может есть стандартные функции или функции numpy для этого? чтобы в код поменьше лишнего своего кода добавлять


Ответы (1 шт):

Автор решения: Кирилл Малышев

Для удобной работы с интервалами есть сторонняя библиотека portion. Устанавливаем её:

pip install portion

На гитхабе есть много примеров. Получить пересечение можно так:

import portion as P
r1 = P.open(5, 10)
r2 = P.open(7, 15)
res = r1 & r2  # (7, 10)

Проверить вхождение числа можно операцией in:

res = value in r1
→ Ссылка