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 k
entã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 definirk = 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
True
imprima que otarget
foi encontrado no índicei
.
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 epy_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)
adicionaitem
até o final delist
.
- 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.
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
eend
são opcional argumentos posicionais; você pode usá-los para pesquisar e encontrar o índice de um item na fatia da lista começando emstart
e estendendo-se atéend - 1
.
Observação : O .índice() método retorna apenas o índice do primeira ocorrência de
value
emlist
. 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 !