Есть ли функция библиотеки, которая выполняет бинарный поиск в списке/кортеже и возвращает позицию элемента, если найдена, и "False" (-1, Нет и т.д.), если нет?
Я нашел функции bisect_left/right в bisect module, но они все равно возвращают позицию, даже если элемент отсутствует в списке. Это прекрасно подходит для их предполагаемого использования, но я просто хочу знать, есть ли элемент в списке или нет (не хотите вставлять что-либо).
Я думал об использовании bisect_left
, а затем проверял, соответствует ли элемент в этой позиции тому, что я ищу, но это кажется громоздким (и мне также нужно сделать проверку границ, если число может быть больше самого большого число в моем списке). Если есть более хороший метод, я хотел бы узнать об этом.
Изменить. Чтобы уточнить, для чего мне это нужно: я знаю, что словарь будет очень хорошо подходит для этого, но я стараюсь, чтобы потребление памяти было как можно ниже. Мое предполагаемое использование было бы своего рода двухсторонней справочной таблицей. У меня есть в таблице список значений, и мне нужно иметь доступ к значениям на основе их индекса. А также я хочу, чтобы найти индекс определенного значения или None, если значение отсутствует в списке.
Использование словаря для этого было бы самым быстрым способом, но (приблизительно) удвоить требования к памяти.
Я задавал этот вопрос, думая, что, возможно, что-то забыл в библиотеках Python. Кажется, мне придется написать свой собственный код, как предположил Мо.