Búsqueda binaria (bisección) en Python

¿Existe una función de biblioteca que realice una búsqueda binaria en una lista / tupla y devuelva la posición del elemento si se encuentra y 'Falso' (-1, Ninguno, etc.) si no?

Encontré las funciones bisect_left / right en elmódulo bisect, pero siguen devolviendo una posición incluso si el elemento no está en la lista. Eso está perfectamente bien para su uso previsto, pero solo quiero saber si un elemento está en la lista o no (no quiero insertar nada).

Pensé en usarbisect_left y luego verificando si el ítem en esa posición es igual a lo que estoy buscando, pero eso parece incómodo (y también necesito verificar los límites si el número puede ser más grande que el número más grande en mi lista). Si hay un método mejor, me gustaría saberlo.

Editar Para aclarar para qué necesito esto: soy consciente de que un diccionario sería muy adecuado para esto, pero estoy tratando de mantener el consumo de memoria lo más bajo posible. Mi uso previsto sería una especie de tabla de consulta de doble sentido. Tengo en la tabla una lista de valores y necesito poder acceder a los valores según su índice. Y también quiero poder encontrar el índice de un valor particular o Ninguno si el valor no está en la lista.

Usar un diccionario para esto sería la forma más rápida, pero duplicaría (aproximadamente) los requisitos de memoria.

Estaba haciendo esta pregunta pensando que podría haber pasado por alto algo en las bibliotecas de Python. Parece que tendré que escribir mi propio código, como sugirió Moe.

Respuestas a la pregunta(12)

Su respuesta a la pregunta