Curso
Em Python, uma estrutura de dados ajuda você a organizar e armazenar dados de forma eficiente. Uma estrutura comum e versátil é uma lista, que pode conter diferentes tipos de dados em uma ordem específica. Python também tem várias funções ou métodos pra trabalhar com listas.
Neste tutorial, você vai aprender sobre a função Python index(). O método index() procura um elemento na lista e mostra a posição/índice dele. Primeiro, este tutorial vai te mostrar o que são listas e, depois, você vai ver alguns exemplos simples de como usar a função index().
Para executar facilmente todos os códigos de exemplo deste tutorial, você pode criar uma pasta de trabalho do DataLab de graça, que já vem com o Python instalado e contém todos os exemplos de código.
O que é indexação em Python?
Em Python, indexação é o processo de acessar um elemento específico em uma sequência, como uma string ou lista, usando sua posição ou número de índice. A indexação em Python começa em 0, o que significa que o primeiro elemento de uma sequência tem um índice de 0, o segundo elemento tem um índice de 1 e assim por diante. Por exemplo, se a gente tem uma string “Olá”, dá pra acessar a primeira letra “O” usando o índice 0 com a notação de colchetes: string[0].
A função embutida do Python, index(), é uma ferramenta útil pra achar o índice de um elemento específico numa sequência. Essa função pega um argumento que representa o valor a ser procurado e mostra o índice da primeira vez que esse valor aparece na sequência.
Se o valor não for encontrado na sequência, a função gera um ValueError. Por exemplo, se a gente tem uma lista [1, 2, 3, 4, 5], dá pra achar o índice do valor 3 chamando list.index(3), que vai devolver o valor 2 (já que 3 é o terceiro elemento da lista e a indexação começa em 0).
A função index() é uma ferramenta poderosa em Python, pois simplifica o processo de encontrar o índice de um elemento em uma sequência, eliminando a necessidade de escrever loops ou instruções condicionais. Essa função é super útil quando você tá trabalhando com muitos dados ou estruturas complicadas, onde procurar manualmente pode demorar muito e dar errado.
Aprenda Python do zero
O que é a função index()?
O método index() mostra o índice mais baixo na lista onde o elemento procurado aparece.
Vamos experimentar:
list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
element = 3
print(list_numbers.index(element)) # 2
Se algum elemento que não está presente for procurado, ele vai devolver um erro ValueError.
list_numbers = [4, 5, 6, 7, 8, 9, 10]
element = 3 # Not in the list
print(list_numbers.index(element)) # Throws a ValueError
Trabalhando com Strings
Vamos tentar com elementos de string:
list_numbers = [1, 'two', 3, 4, 5, 6, 7, 8, 9, 10]
element = 'two'
print(list_numbers.index(element)) # 1
Observação: Quando você procura por strings, index() diferencia maiúsculas de minúsculas. Por exemplo, 'Hello'.index('h') vai gerar um erro ValueError.
Encontrando a primeira ocorrência
Imagina que você tem mais de uma instância de um elemento, então index() vai te mostrar a primeira posição onde o elemento aparece.
list_numbers = [3, 1, 2, 3, 3, 4, 5, 6, 3, 7, 8, 9, 10]
element = 3
print(list_numbers.index(element)) # 0
A posição retornada é 0, porque 3 aparece pela primeira vez na primeira posição ou no índice 0 em Python.
E aí, o que tá rolando por aqui: O índice está passando por todos os valores a partir da primeira posição (índice 0), procurando o elemento que você está procurando. Quando encontra o valor, ele mostra a posição e sai do sistema. Mas isso não é muito eficiente quando você está lidando com uma lista grande e precisa encontrar a posição de algo no final da lista.
Usando os parâmetros Iniciar e Parar
list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
element = 7
print(list_numbers.index(element, 5, 8)) # 6
Então, a sintaxe é: list_name.index(element, start, stop).
Aqui, os valores start e stop são opcionais. Na verdade, só use isso quando tiver certeza absoluta sobre o intervalo; caso contrário, você receberá uma mensagem de erro ValueError, conforme mostrado abaixo.
list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
element = 7
print(list_numbers.index(element, 1, 5)) # Throws a ValueError
Encontrando todas as ocorrências
Como o método index() só devolve a primeira correspondência para um objeto, você pode usar compreensão de lista ou expressão geradora se precisar das posições de mais correspondências na lista. Veja como:
list_numbers = [3, 1, 2, 3, 3, 4, 5, 6, 3, 7, 8, 9, 10]
# List comprehension
print([i for i, n in enumerate(list_numbers) if n == 3]) # [0, 3, 4, 8]
list_numbers = [3, 1, 2, 3, 3, 4, 5, 6, 3, 7, 8, 9, 10]
g = (i for i, n in enumerate(list_numbers) if n == 3) # Generator expression
print("Generators store values, the first value here is:", next(g), ". Then the next is:", next(g), "followed by ", next(g),"and finally ", next(g))
# Generators store values, the first value here is: 0. Then the next is: 3 followed by 4 and finally 8
Os geradores são eficientes em termos de memória porque produzem itens um de cada vez, em vez de armazenar todos os resultados como compreensões de lista.
Considerações finais
Parabéns, você acabou de aprender sobre a função index() em Python! Você já viu como isso pode te ajudar a trabalhar com listas. Você também conheceu alguns conceitos novos. Para saber mais sobre compreensão de listas, dá uma olhada no tutorial sobre compreensão de listas em Python do DataCamp. O Tutorial sobre Iteradores Python da DataCamp tem mais informações sobre geradores e expressões de geradores.
Obtenha a certificação para a função de cientista de dados dos seus sonhos
Nossos programas de certificação ajudam você a se destacar e a provar que suas habilidades estão prontas para o trabalho para possíveis empregadores.


Eu uso vários chapéus: Desenvolvedor de software, programador, cientista de dados, desenvolvedor de business intelligence, proprietário de produto
Perguntas frequentes
E se vários valores combinarem com o elemento que estou procurando?
O método ` index() ` só mostra o índice da primeira vez que o elemento correspondente aparece. Se você precisa de todas as posições, use uma compreensão de lista com enumerate().
Posso usar index() com tuplas ou strings?
Sim! O método ` index() ` funciona em qualquer tipo de sequência, incluindo tuplas e strings:
my_tuple = (1, 2, 3, 2)
print(my_tuple.index(2)) # Output: 1
text = "hello world"
print(text.index('o')) # Output: 4Tem como lidar com o ValueError de um jeito legal?
Sim, coloque a chamada index() dentro de um bloco try...except pra evitar erros se o elemento não for encontrado:
my_list = [1, 2, 3]
try:
print(my_list.index(4))
except ValueError:
print("Element not found.")
Como posso procurar a partir do final da lista?
O método ` index() ` não suporta pesquisa reversa. Para encontrar a última ocorrência, inverta a lista manualmente ou use uma compreensão:
my_list = [1, 2, 3, 2, 1]
last_index = len(my_list) - 1 - my_list[::-1].index(2)
print(last_index) # Output: 3
Qual é a diferença entre index() e find()?
O método find() é usado com strings e retorna um -1, em vez de gerar um erro quando o valor não é encontrado. As listas não têm um método “ find() ”.
text = "hello"
print(text.find('e')) # Output: 1
print(text.find('z')) # Output: -1
Posso usar index() com listas aninhadas?
Sim, mas só no nível superior. O comando “ index() ” não procura dentro de estruturas aninhadas.
nested_list = [[1, 2], [3, 4]]
print(nested_list.index([3, 4])) # Output: 1
# This won't work: nested_list.index(3)
O que é o erro “índice da lista fora do intervalo”?
O erro “índice da lista fora do intervalo” aparece quando você tenta acessar um índice que está fora do intervalo de índices válidos para uma lista. Por exemplo, se uma lista tem 5 elementos, os índices válidos são de 0 a 4. Se você tentar acessar um índice maior ou igual a 5, vai aparecer esse erro.
Para evitar o erro “índice da lista fora do intervalo”, certifique-se de que o índice que você está tentando acessar está dentro do intervalo de índices válidos para a lista. Você pode usar a função ` len() ` para saber o tamanho de uma lista e ver se um índice está dentro do intervalo de índices válidos.
O que é o erro “os índices da lista devem ser números inteiros”?
O erro “os índices da lista devem ser números inteiros” aparece quando você tenta usar um valor que não é inteiro como índice da lista. Por exemplo, se você tentar usar um número de ponto flutuante ou uma string como índice de lista, vai aparecer esse erro.
Para evitar o erro “os índices da lista devem ser inteiros”, certifique-se de que está usando um valor inteiro como índice da lista. Se você precisar usar um valor não inteiro como índice, pode convertê-lo em um inteiro usando a função int().