Encontrar o índice de um item dado uma lista contendo-o em Python
Para uma lista ["foo", "bar", "baz"]
e um item da lista "bar"
, como faço para obter seu índice (1) em Python?
2865
3
Para uma lista ["foo", "bar", "baz"]
e um item da lista "bar"
, como faço para obter seu índice (1) em Python?
Referência: Estruturas de Dados > Mais em Listas
Seguem-se as advertências
Note que embora esta seja talvez a forma mais limpa de responder à pergunta como foi feita,
index
é um componente bastante fraco da APIlist
, e eu não consigo lembrar da última vez que a utilizei com raiva. Tem sido apontado para mim nos comentários que como essa resposta é fortemente referenciada, ela deveria ser mais completa. Algumas advertências sobre alist.index
seguem. Provavelmente vale a pena dar uma olhada inicialmente no docstring para isso:Linear time-complexity em comprimento de lista
Uma chamada
index
verifica cada elemento da lista em ordem, até encontrar uma correspondência. Se sua lista é longa, e você não sabe aproximadamente onde ela ocorre na lista, esta busca pode se tornar um gargalo. Nesse caso, você deve considerar uma estrutura de dados diferente. Note que se você souber aproximadamente onde encontrar a correspondência, você pode dar uma dica. Por exemplo, neste trecho,l.index(999_999, 999_990, 1_000_000)
é aproximadamente cinco ordens de magnitude mais rápido que ol.index(999_999)
direto, porque o primeiro só tem que pesquisar 10 entradas, enquanto o segundo pesquisa um milhão:Só devolve o índice da primeira partida ao seu argumento
Uma chamada para
index
procura na lista em ordem até encontrar uma correspondência, e stops lá. Se você espera precisar de índices de mais correspondências, você deve utilizar uma compreensão da lista, ou expressão do gerador.A maior parte dos lugares onde eu já teria utilizado
index
, agora uso uma compreensão de lista ou expressão de gerador porque eles são mais generalizáveis. Portanto, se você está considerando a possibilidade de utilizar `index', dê uma olhada nestas excelentes características python.Atira se elemento não presente na lista
Uma chamada para o
index
resulta em umValueError
se o item não estiver presente.Se o item pode não estar presente na lista, você deve
item na minha_list
(abordagem limpa e legível), ouindex
em um bloco detenta/exceto
que capturaValueError
(provavelmente mais rápido, pelo menos quando a lista a ser pesquisada é longa, e o item geralmente está presente).Uma coisa que é realmente útil na aprendizagem do Python é usar a função de ajuda interativa:
o que muitas vezes o levará ao método que procura.
index()
retorna o primeiro índice de valor!