Encontrar todos los índices de un elemento en una lista en Python

Manav Narula 30 enero 2023
  1. Uso del bucle for para encontrar los índices de todas las ocurrencias de un elemento
  2. Usar la función numpy.where() para encontrar los índices de todas las ocurrencias de un elemento en Python
  3. Usar la función more_itertools.locate() para encontrar los índices de todas las ocurrencias de un elemento
Encontrar todos los índices de un elemento en una lista en Python

Una lista se utiliza en Python para almacenar múltiples elementos bajo un mismo nombre. Se puede acceder a cada elemento utilizando su posición en la lista. Un elemento puede estar presente en múltiples posiciones en una lista.

En este tutorial, presentaremos cómo encontrar los índices de todas las ocurrencias de un elemento específico en una lista. Trabajaremos con la siguiente lista y encontraremos todos los índices del elemento 1.

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]

Uso del bucle for para encontrar los índices de todas las ocurrencias de un elemento

Podemos iterar fácilmente sobre la lista y comparar cada elemento con el elemento requerido y encontrar sus índices. Podemos almacenar el resultado final en una nueva lista. En el siguiente ejemplo, iteramos sobre la lista utilizando la función 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)

Producción :

[0, 2, 8]

Una forma más eficiente y compacta de implementar el código anterior es utilizar la comprensión de la lista que aparece a continuación.

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]

pos = [i for i in range(len(l1)) if l1[i] == 1]
print(pos)

Producción :

[0, 2, 8]

Del mismo modo, también podemos utilizar la función enumerate(), que devuelve el índice y el valor juntos. Por ejemplo:

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = [i for i, x in enumerate(l1) if x == 1]
print(pos)

Producción :

[0, 2, 8]

Usar la función numpy.where() para encontrar los índices de todas las ocurrencias de un elemento en Python

La librería NumPy tiene la función where(), que se utiliza para devolver los índices de un elemento en un array basándose en alguna condición. Para este método, tenemos que pasar la lista como un array. El resultado final también está en un array. El siguiente fragmento de código muestra cómo podemos utilizar 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)

Producción :

[0 2 8]

Usar la función more_itertools.locate() para encontrar los índices de todas las ocurrencias de un elemento

El more_itertools es un módulo de terceros muy práctico. Tiene muchas funciones que pueden crear un código eficiente y compacto cuando se trabaja con iterables. La función locate() de este módulo devuelve los índices de los elementos que son True para la condición. Devuelve un objeto itertools. El siguiente fragmento de código explica cómo podemos utilizar 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)

Producción :

[0, 2, 8]

Utilizamos la función list() para asegurarnos de que el resultado final tiene forma de 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

Artículo relacionado - Python List