Элемент который по условию нужно найти

Есть массив b = {-100, 0, 150, 230} Есть элемент a = 50 Логика такая значение а должно быть между двумя элементами в массиве и в результате выдать элемент с большЕй индексацией в массиве. Например если значение а ровно 50 то результат 100, если а равен -98 то результат равен 0, если а равен 200 то результат равен 230

 b = {-100, 0, 150, 230}
    a = 50
    res = []
    for z in a:
         for (i), (j) in zip(b[:-1], b[1:]):
              if i <= z < j:
              res.append(j)
        
    
    OUT = res

Ответы (1 шт):

Автор решения: MBo

Используйте бинарный поиск, тем более что список уже сортирован, и реализация в Python встроенная есть

import bisect

b = [-100, 0, 150, 230]
idx = bisect.bisect_left(b, 42)
print(idx, b[idx])   

>>> 2  150

P.S. Если число элементов всегда мало, то проще по списку в цикле пройти, пока следующий элемент не станет меньше заданного - линейный поиск.

→ Ссылка