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 экстраполировать данные в будущее?
  • Является ли x == x когда-либо False в Python?
  • ValueError: не удалось преобразовать строку в float: id
  • Поплавки, не оценивающие как отрицательные (Python)
  • Каковы все возможные расчеты, которые могут вызвать NaN в Python?
  • Преобразование научной нотации в десятичный - python
  • Математика с плавающей запятой в python / numpy не воспроизводится на разных машинах
  • Как добраться до единичной матрицы от numpy.dot (A, A_inv)
  • Вызов / выбор переменных (float value) с использованием пользовательского ввода в Python
  • Как избежать ошибок с плавающей запятой?
  • Python - лучший язык программирования в мире.