Encontrar todos los índices de un elemento en una lista en Python
-
Uso del bucle
for
para encontrar los índices de todas las ocurrencias de un elemento -
Usar la función
numpy.where()
para encontrar los índices de todas las ocurrencias de un elemento en Python -
Usar la función
more_itertools.locate()
para encontrar los índices de todas las ocurrencias de un elemento
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 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.
LinkedInArtículo relacionado - Python List
- Convertir un diccionario en una lista en Python
- Eliminar todas las apariciones de un elemento de una lista en Python
- Eliminar duplicados de una lista en Python
- Cómo obtener el promedio de una lista en Python
- ¿Cuál es la diferencia entre los métodos de lista que añaden y amplían
- Cómo convertir una lista en cadena en Python