Я знаю, что я могу использовать сингулярные значения как ключи в dict
. Например, я могу hash 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
(мне нужно будет перебирать ключи и проверять, есть ли key[0] <= x <= key[1]
).
Есть ли способ хешировать диапазон значений, чтобы я мог проверить хеш-таблицу для 0.15
и все равно получить #execute B
?
Если такое хэширование невозможно, как еще я смогу улучшить время выполнения этого? Я работаю с достаточно большими наборами данных, что линейное время выполнения недостаточно быстро.
РЕДАКТИРОВАТЬ. В ответ на ответ на скуку я должен отметить, что интервалы нельзя считать регулярными. На самом деле, я могу почти гарантировать, что они не
В ответ на запросы в комментариях я должен упомянуть, что я делаю это в попытке реализовать выбор на основе фитнеса в генетическом алгоритме, Сам алгоритм предназначен для домашних заданий, но конкретная реализация заключается только в том, чтобы улучшить время выполнения для генерации экспериментальных данных.