Encontre todos os índices de um elemento em uma lista em Python

Manav Narula 30 janeiro 2023
  1. Uso do loop for para encontrar os índices de todas as ocorrências de um elemento
  2. Use a função numpy.where() para encontrar os índices de todas as ocorrências de um elemento em Python
  3. Use a função more_itertools.locate() para encontrar os índices de todas as ocorrências de um elemento
Encontre todos os índices de um elemento em uma lista em Python

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 Narula avatar Manav Narula avatar

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

Artigo relacionado - Python List