Como encontrar o índice de um item em listas Python

Neste guia, você aprenderá como encontrar o índice de um elemento em uma lista do Python, usando iterações simples e um método de lista integrado índice().

Ao trabalhar com listas do Python, pode ser necessário descobrir o índice no qual um determinado item ocorre. Você pode fazer isso por:

  • Percorrendo a lista e verificando se o item no índice atual é igual ao valor específico
  • Usando o método de lista integrado index()

Você aprenderá ambos os itens acima neste tutorial. Vamos começar. ‍

Listas Python, Revisitadas

Em Python, uma lista é uma coleção de itens — do mesmo ou de diferentes tipos de dados. Eles são mutável ; você pode modificá-los sem precisar criar uma nova lista.

Considere este exemplo fruits: uma lista de 5 frutas diferentes.

  fruits = ("apple","mango","strawberry","pomegranate","melon")

Você pode obter o comprimento de qualquer objeto Python usando o built-in len() função. Então você pode ligar para o len() função com o objeto de lista (fruits) como o argumento para obter seu comprimento, conforme mostrado abaixo.

  len(fruits)
# Output: 5

vamos usar o fruits list como um exemplo em execução neste tutorial.

Indexação em listas do Python

Python segue indexação zero. Portanto, em qualquer iterável do Python, o primeiro item está no índice 0, o segundo item está no índice 1 e assim por diante. Se o comprimento do iterável for kentão o último item está no índice k - 1.

Em Python, você pode usar a função range() para obter índices à medida que percorre os iteráveis.

Observação : Quando você faz um loop range(k), você obtém os índices 0,1,2,…,(k-1). Então, ao definir k = len(list)você pode obter a lista de todos os índices válidos.

A célula de código a seguir explica isso.

  for i in range(len(fruits)):
  print(f"i:{i}, fruit({i}) is {fruits(i)}")

# Output
i:0, fruit(0) is apple
i:1, fruit(1) is mango
i:2, fruit(2) is strawberry
i:3, fruit(3) is pomegranate
i:4, fruit(4) is melon

Agora que abordamos os fundamentos do listas Python vamos aprender como encontrar o índice de um item em uma lista.

Localizar índice de um item de lista por iteração usando loops for

Vamos considerar a lista fruits da seção anterior. Aprenderemos como encontrar o índice de um item específico nesta lista por iteração usando for laço.

Usando as funções for Loop e range()

vamos consertar target: o valor que estamos procurando na lista.

Você pode usar for loop e range() função para obter a lista de índices de 0 para len(fruits) - 1.

  • Percorra a lista de frutas acessando cada índice.
  • Verifique se o item no índice atual i é igual ao alvo.
  • Se Trueimprima que o target foi encontrado no índice i.
  fruits = ("apple","mango","strawberry","pomegranate","melon")

target = "mango"

for i in range(len(fruits)):
  if fruits(i) == target:
   print(f"{target} found at index {i}")

# Output
mango found at index 1

Neste exemplo, a string de destino 'mango' aparece exatamente uma vez (no índice 1) na lista fruits.

No entanto, às vezes o valor de destino aparece mais de uma vez ou não aparece. Para lidar com esses casos, vamos modificar o loop acima e agrupar o conteúdo dentro de uma função chamada find_in_list.

Compreendendo a definição da função

A função find_in_list tem dois parâmetros:

  • target: o valor que você está procurando e
  • py_list: a lista do Python que você está pesquisando.
  def find_in_list(target,py_list):
  target_indices = ()
  for i in range(len(fruits)):
    if fruits(i) == target:
      target_indices.append(i)  
  if target_indices == ():
    print("Sorry, target not found!")
  else:
    print(f"{target} is found at indices {target_indices}")

No corpo da função, inicializamos uma lista vazia target_indices. Percorremos a lista e acessamos os itens da lista. Se o alvo foi encontrado em um determinado índice, adicionamos esse índice ao target_indices lista usando o append() método.

Observação : Em Python, list.append(item) adiciona item até o final de list.

  • Se o alvo nunca for encontrado, então target_indices é uma lista vazia; o usuário é notificado de que o destino não está presente na lista.
  • Se o alvo for encontrado em mais de um índice, então target_indices contém todos esses índices.

Em seguida, vamos redefinir o fruits lista como mostrado.

Desta vez, estamos procurando o target corda 'mango'que ocorre duas vezes – nos índices 1 e 4.

  fruits = ("apple","mango","strawberry","pomegranate","mango","melon")
target = "mango"
find_in_list(target,fruits)

# Output
mango is found at indices (1, 4)

Ao chamar a função find_in_list com target e fruits como os argumentos, vemos que ambos os índices são retornados.

  target = "turnip"
find_in_list(target,fruits)

# Output
Sorry, target not found!

Se você tentar pesquisar 'turnip' que não está presente no fruits list, você receberá uma mensagem de que o alvo não foi encontrado.

Usando for Loop e função enumerate ()

Em Python, você pode usar o enumerate() função para acessar o índice e os itens simultaneamente – sem ter que usar o range() função.

A célula de código a seguir mostra como você pode usar o enumerate() função para obter os índices e os itens.

  fruits = ("apple","mango","strawberry","pomegranate","mango","melon")
for index,fruit in enumerate(fruits):
  print(f"Index {index}: {fruit}")

# Output
Index 0: apple
Index 1: mango
Index 2: strawberry
Index 3: pomegranate
Index 4: mango
Index 5: melon

Agora, vamos reescrever a função Python para encontrar o índice de itens na lista usando enumerate() função.

  def find_in_list(target,py_list):
  target_indices = ()
  for index, fruit in enumerate(fruits):
   if fruit == target:
    target_indices.append(index) 
  if target_indices == ():
    print("Sorry, target not found!")
  else:
    print(f"{target} is found at indices {target_indices}")

Como na seção anterior, agora você pode chamar o find_in_list função com argumentos válidos.

Você pode traduzir a definição de função acima em uma compreensão de lista equivalente e faremos isso na próxima seção.

Encontre o índice de um item de lista por iteração usando a compreensão de lista

Compreensões de lista em Python permitem que você crie listas a partir de listas existentes com base em alguma condição. Aqui está a construção geral:

  new_list = (<output> for <items in existing iterables> if <condition is true>) 

A figura abaixo descreve como identificar os elementos de compreensão de lista; usando isso, você pode converter a função find_in_list para uma compreensão de lista.

python-localizar-na-lista

Usando o exposto acima, a expressão para compreensão de lista para criar índices de destino é a seguinte.

  target_indices = (index for index,fruit in enumerate(fruits) if fruit==target)

Como exercício, você pode tentar executar o trecho de código acima para alguns outros exemplos.

Encontre o índice de um item de lista usando o método index()

Para encontrar o índice de um item em uma lista do Python, você também pode usar o built-in .index() método. Aqui está a sintaxe geral:

  list.index(value,start,end)

Analisando o método acima:

  • value é o valor de destino que você está procurando.
  • start e end são opcional argumentos posicionais; você pode usá-los para pesquisar e encontrar o índice de um item na fatia da lista começando em start e estendendo-se até end - 1.

Observação : O .índice() método retorna apenas o índice do primeira ocorrência de value em list. Mesmo quando você encontra o índice de um item em uma fatia da lista (início: fim-1) esse método retorna apenas o índice correspondente à primeira ocorrência do item.

Vamos revisitar nosso exemplo para entender como o .index() método funciona.

  fruits = ("apple","mango","strawberry","pomegranate","mango","melon")
target = "mango"

fruits.index(target)
1

Embora existam duas ocorrências de 'mango' no fruits lista, você pode ver que apenas o índice da primeiro ocorrência foi retornada.

Para obter o índice da segunda ocorrência de manga, podemos pesquisar na fatia da lista começando no índice 2 e estendendo-se até o índice 5, conforme mostrado abaixo.

  fruits.index(target,2,5)
4

Como lidar com ValueErrors em Python

Agora vamos ver o que acontece se você tentar encontrar o índice de um item que não está presente na lista, digamos, 'carrot'.

  target = "carrot"

fruits.index(target)

# Output
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-17-81bd454e44f7> in <module>()
      1 target = "carrot"
      2 
----> 3 fruits.index(target)

ValueError: 'carrot' is not in list

Como visto na célula de código acima, isso lança um ValueError . Em Python, você pode lidar com isso como uma exceção usando o método try e except blocos.

A sintaxe geral a ser usada try-except é o seguinte.

  try:
  # to do this
except <ErrorType>:
  # do this to handle <ErrorType> as exception

Usando os blocos try-except acima, podemos manipular ValueError Como uma exceção.

  target = "carrot"
try:
  fruits.index(target)
except ValueError:
  print(f"Sorry, could not find {target} in list")

# Output
Sorry, could not find carrot in list

O código acima faz o seguinte:

  • Se o destino estiver presente na lista, ele retornará o índice do destino.
  • Se o alvo não estiver presente, ele manipula ValueError como uma exceção e imprime a mensagem de erro.

Resumindo

Aqui está um resumo dos diferentes métodos que você aprendeu para encontrar o índice de um item em uma lista do Python.

  • Você pode usar o Python para loop e faixa() para obter os itens e seus respectivos índices. Verifique se os itens nos índices correspondem ao alvo.
  • Você também pode usar o enumerar() função para acessar simultaneamente o item e o índice.
  • Você pode usar ambos os métodos acima dentro de uma expressão de compreensão de lista.
  • Para encontrar o índice de um item em uma lista, você também pode usar o built-in .índice() método.
  • lista.index(valor) retorna o índice da primeira ocorrência de valor em lista. Se o valor não estiver presente, ele gera um ValueError.
  • Você pode pesquisar em uma determinada fatia da lista usando list.index(valor, início, fim) para pesquisar a ocorrência de um valor na fatia da lista (início:fim-1).

A seguir, aprenda a classificar um dicionário Python por chave ou por valor. Feliz Programação em Python !

Artigos relacionados