Трудно найти название для этой проблемы, поэтому позвольте мне описать проблему. У меня есть список строго монотонных возрастающих значений с плавающей точкой, где 0 и 1 - верхняя и нижняя границы соответственно. Далее есть значение, и я хочу узнать, между каким двумя значениями действительное значение.Найти индекс записей в списке, где значение находится между
Рассмотрим следующий пример:
li = [0, 0.1, 0.2, 0.3, 0.5, 0.75, 0.9, 1.0]
мне нужна функция, которая в основном возвращает индекс пары соответствия. Если значение находится в пределах от 0 до 0,1 (чтобы быть точным: 0 < = значение < 0,1), она должна возвращать 0. Примеры:
get_index(li, 0.3) = 3
get_index(li, 0.05) = 0
get_index(li, 0.9) = 6
Мой текущий подход должен был бы пройти по списку, сохранить последний и текущий элемент и использовать счетчик. В принципе, вот так:
def get_index(li, val):
counter = 0
old_val = None
new_val = None
for item in li:
if new_val is None:
new_val = item
continue
old_val = new_val
new_val = item
if old_val <= val and val < new_val:
return counter
counter += 1
Я чувствую, однако, что должен быть более простой способ. Как сделать это короче, проще?
Почему 'get_index (li, 0.9)' будет 7? вы имели в виду 6? – Kasramvd
@ Kasramvd: Нет, 7 является правильным, как 0,9 <0,9 и 0,9 <1,0. Это седьмая пара. –
Что вы подразумеваете под «подходящей парой» точно? –