Wyszukiwanie binarne (bisekcja) w Pythonie

Czy istnieje funkcja biblioteczna, która wykonuje wyszukiwanie binarne na liście / krotce i zwraca pozycję elementu, jeśli została znaleziona i „Fałsz” (-1, Brak itd.), Jeśli nie?

Znalazłem funkcje bisect_left / right in themoduł dwudzielny, ale nadal zwracają pozycję, nawet jeśli elementu nie ma na liście. Jest to idealne rozwiązanie dla ich zamierzonego użycia, ale chcę tylko wiedzieć, czy element jest na liście, czy nie (nie chcę niczego wstawiać).

Myślałem o użyciubisect_left a następnie sprawdzanie, czy element w tej pozycji jest równy temu, co szukam, ale wydaje się to kłopotliwe (i muszę również sprawdzać granice, czy liczba może być większa niż największa liczba na mojej liście). Jeśli jest lepsza metoda, chciałbym o tym wiedzieć.

Edytować Aby wyjaśnić, czego potrzebuję: jestem świadomy, że słownik byłby do tego bardzo odpowiedni, ale staram się, aby zużycie pamięci było jak najniższe. Moje zamierzone użycie byłoby swego rodzaju podwójną tabelą przeglądową. Mam w tabeli listę wartości i muszę mieć dostęp do wartości na podstawie ich indeksu. A także chcę mieć możliwość znalezienia indeksu określonej wartości lub Brak, jeśli wartość nie znajduje się na liście.

Korzystanie ze słownika byłoby najszybszym sposobem, ale (w przybliżeniu) podwoiłoby wymagania dotyczące pamięci.

Zadałem to pytanie, myśląc, że mogłem przeoczyć coś w bibliotekach Pythona. Wygląda na to, że będę musiał napisać własny kod, jak zasugerował Moe.

questionAnswers(12)

yourAnswerToTheQuestion