Я знаю, что могу хешировать особые значения как ключи в dict
. Например, я могу хешировать 5
как один из ключей в dict
.
В настоящее время я столкнулся с проблемой, требующей от меня хеширования диапазона значений.
В принципе, мне нужен более быстрый способ сделать это:
if 0 <= x <= 0.1:
# f(A)
elif 0.1 <= x <= 0.2:
# f(B)
elif 0.2 <= x <= 0.3:
# f(C)
elif 0.3 <= x <= 0.4:
# f(D)
elif 0.4 <= x <= 0.5:
# f(E)
elif 0.5 <= x <= 0.6:
# f(F)
где x
- некоторый параметр float
произвольной точности.
Самый быстрый способ, который я могу придумать, - это хеширование, но вот проблема: я могу использовать (0,1, 0,2)
в качестве ключа, но это все равно будет стоить мне O (n) времени выполнения и в конечном итоге не лучше, чем набор elif
s (мне пришлось бы перебирать ключи и проверять, есть ли key [0] ) .
Есть ли способ хешировать диапазон значений, чтобы я мог проверить хеш-таблицу на 0,15
и все равно получить #execute B
?
Если такое хеширование не невозможно, как еще я мог бы улучшить время выполнения этого? Я работаю с достаточно большими наборами данных, поэтому линейное время выполнения недостаточно быстрое.
РЕДАКТИРОВАТЬ : В ответ на ответ Чикена я должен отметить, что нельзя считать интервалы регулярными. Фактически, я могу почти гарантировать, что это не так.
В ответ на запросы в комментариях я должен упомянуть, что делаю это в попытке реализовать отбор на основе пригодности в генетическом алгоритме . Сам алгоритм предназначен для домашнего задания, но конкретная реализация предназначена только для улучшения времени выполнения для генерации экспериментальных данных.