Двоичный поиск значения в списке (или массиве) используется для упорядоченных последовательностей (отсортированных по возрастанию или убыванию). Заключается такой поиск в определении, содержит ли массив определенное значение, а также определение места его нахождения.
li = [0,3,5,7,10,20,28,30,45,56] x = 45 i = 0 j = len(li)-1 m = int(j/2) while li[m] != x and i < j: if x > li[m]: i = m+1 else: j = m-1 m = int((i+j)/2) if i > j: print('Элемент не найден') else: print('Индекс элемента: ', m)