python: найти значение в пределах диапазона в массиве float

У меня есть следующий отсортированный список python, хотя возможны несколько значений:

[0.0943200769115388, 0.17380131294164516, 0.4063245853719435, 0.45796523225774904, 0.5040225609708342, 0.5229351852840304, 0.6145136350368882, 0.6220712583558284, 0.7190096076050408, 0.8486436998476048, 0.8957381707345986, 0.9774325873910711, 0.9832076130275351, 0.985386554764682, 1.0] 

Теперь я хочу знать индекс в массиве, где может выпадать определенное значение:

Например, значение 0.25 упадет в индекс 2 поскольку оно находится между 0,173 и 0,40. Думаю, я могу пройти через список и сделать это в цикле for, но мне было интересно, есть ли лучший способ сделать это, что может быть более эффективным с точки зрения вычислений. Я создаю этот массив один раз, но вам нужно выполнить множество поисков.

2 Solutions collect form web for “python: найти значение в пределах диапазона в массиве float”

 >>> vals = [0.0943200769115388, 0.17380131294164516, 0.4063245853719435, 0.45796523225774904, 0.5040225609708342, 0.5229351852840304, 0.6145136350368882, 0.6220712583558284, 0.7190096076050408, 0.8486436998476048, 0.8957381707345986, 0.9774325873910711, 0.9832076130275351, 0.985386554764682, 1.0] >>> import bisect >>> bisect.bisect(vals, 0.25) 2 

Если вы знаете, что список уже отсортирован, то решение для учебника должно выполнить двоичный поиск. Вы сохраняете две границы индекса, мин и макс. Инициализируйте их до 0 и len – 1. Затем установите mid (min + max) / 2. Сравните значение с индексом mid с целевым значением. Если это меньше, установите min в середину + 1. Если это больше, установите max в середину 1. Повторите, пока вы не найдете значение или до max <min, и в этом случае вы найдете нужный индекс в O ( log (n)).

  • Преобразование научной нотации в десятичный - python
  • Преобразуйте число с плавающей запятой в определенную точность, затем скопируйте в String
  • Как перегрузить `float ()` для пользовательского класса в Python?
  • Запрос значений с плавающей запятой в SQLAlchemy
  • ValueError: неверный литерал для float () в Python
  • Почему ключ словаря с плавающей запятой перезаписывает целочисленный ключ с тем же значением?
  • Преобразовать float в строку с нулевым десятичным значком afer point в Python
  • Распечатайте поплавок с правильной точностью
  • Numpy float64 vs Python float
  • Как преобразовать символы Unicode в float в Python?
  • В аргументе float_precision для pandas.read_csv
  • Python - лучший язык программирования в мире.