Encontre todos os índices de um elemento em uma lista em Python
-
Uso do loop
for
para encontrar os índices de todas as ocorrências de um elemento -
Use a função
numpy.where()
para encontrar os índices de todas as ocorrências de um elemento em Python -
Use a função
more_itertools.locate()
para encontrar os índices de todas as ocorrências de um elemento
Uma lista é usada em Python para armazenar vários elementos sob um único nome. Cada elemento pode ser acessado usando sua posição na lista. Um elemento pode estar presente em várias posições em uma lista.
Neste tutorial, vamos apresentar como encontrar os índices de todas as ocorrências de um elemento específico em uma lista. Trabalharemos com a seguinte lista e encontraremos todos os índices do elemento 1
.
l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
Uso do loop for
para encontrar os índices de todas as ocorrências de um elemento
Podemos facilmente iterar na lista e comparar cada elemento com o elemento necessário e encontrar seus índices. Podemos armazenar o resultado final em uma nova lista. No exemplo a seguir, iteramos a lista usando a função range()
:
l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = []
x = 1 # The required element
for i in range(len(l1)):
if l1[i] == x:
pos.append(i)
print(pos)
Resultado:
[0, 2, 8]
Uma forma mais eficiente e compacta de implementar o código acima é usar a compreensão de lista abaixo.
l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = [i for i in range(len(l1)) if l1[i] == 1]
print(pos)
Resultado:
[0, 2, 8]
Da mesma forma, também podemos usar a função enumerate()
, que retorna o índice e o valor juntos. Por exemplo:
l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = [i for i, x in enumerate(l1) if x == 1]
print(pos)
Resultado:
[0, 2, 8]
Use a função numpy.where()
para encontrar os índices de todas as ocorrências de um elemento em Python
A biblioteca NumPy
tem a função where()
, que é usada para retornar os índices de um elemento em un array com base em alguma condição. Para este método, temos que passar a lista como um array. O resultado final também está em un array. O seguinte snippet de código mostra como podemos usar este método:
import numpy as np
l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = np.where(np.array(l1) == 1)[0]
print(pos)
Resultado:
[0 2 8]
Use a função more_itertools.locate()
para encontrar os índices de todas as ocorrências de um elemento
O more_itertools
é um módulo de terceiros e prático. Ele tem muitas funções que podem criar um código eficiente e compacto ao trabalhar com iteráveis. A função locate()
neste módulo retorna os índices dos elementos que são True
para a condição. Ele retorna um objeto itertools
. O seguinte snippet de código explica como podemos usar este método:
from more_itertools import locate
l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = list(locate(l1, lambda x: x == 1))
print(pos)
Resultado:
[0, 2, 8]
Usamos a função list()
para garantir que o resultado final esteja na forma de uma lista.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn