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