Поиск одинаковых элементов в бинарном поиске после Python

Подскажите, пожалуйста, что сделать, чтобы бинарный поиск в программе продолжался дальше, если искомый элемент уже найден. Например, нужно найти число 2. А оно встречается три раза в списке. Спасибо!


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

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

в зависимости от вашего кода конечно, но вы можете оформить что-то типа этого: Поиск в таблице чисел.

def grade(score, breakpoints=(60, 70, 80, 90), grades='FDCBA'):
     i = bisect(breakpoints, score)
     return grades[i]

[grade(score) for score in [33, 99, 77, 70, 89, 90, 100]]
['F', 'A', 'C', 'C', 'B', 'A', 'A']
→ Ссылка
Автор решения: CrazyElf

Поскольку бинарный поиск делается в отсортированном списке, то после нахождения нужного элемента бинарным поиском просто проходите по списку сначала влево от найденного элемента, пока элементы списка совпадают с искомым, а потом точно так же вправо.

[0, 1, 1, 2, 2, 2, 3, 4, 4, 5, 5, 5, 6, 7, 7]
             ^
             | например, бинарный поиск найдёт этот элемент
→ Ссылка