Existe uma função de biblioteca que realiza pesquisa binária em uma lista / tupla e retorna a posição do item, se encontrado, e 'Falso' (-1, Nenhum, etc.), se não?
Encontrei as funções bisect_left / right no módulo bisect , mas elas ainda retornam uma posição mesmo que o item não esteja na lista. Isso é perfeitamente adequado para o uso pretendido, mas eu só quero saber se um item está na lista ou não (não quero inserir nada).
Pensei em usar bisect_left
e depois verificar se o item nessa posição é igual ao que estou procurando, mas isso parece complicado (e também preciso verificar os limites se o número pode ser maior que o maior número da minha lista). Se houver um método melhor, eu gostaria de saber sobre isso.
Editar Para esclarecer o que eu preciso disso: estou ciente de que um dicionário seria muito adequado para isso, mas estou tentando manter o consumo de memória o mais baixo possível. Meu uso pretendido seria uma espécie de tabela de consulta de duas vias. Eu tenho na tabela uma lista de valores e preciso poder acessar os valores com base em seu índice. E também quero encontrar o índice de um valor específico ou Nenhum se o valor não estiver na lista.
Usar um dicionário para isso seria a maneira mais rápida, mas dobraria (aproximadamente) os requisitos de memória.
Eu estava fazendo essa pergunta pensando que poderia ter esquecido algo nas bibliotecas Python. Parece que vou ter que escrever meu próprio código, como sugeriu Moe.
np.searchsorted
é útil. docs.scipy.org/doc/numpy/reference/generated/…