Python: obtenga los índices de todas las ocurrencias de un elemento en una lista

Dada una lista, la tarea es escribir un programa en Python para obtener los índices de todas las ocurrencias de un elemento en una lista.

Método 1: Usar el bucle For

Este es un método simple para obtener los índices de todas las ocurrencias de un elemento en una lista. Aquí usamos un ciclo for para iterar a través de cada elemento en la lista original.

Sintaxis: para iterator_name en rango (longitud)

dónde

  • iterator_name es el nombre del iterador
  • longitud es el tamaño de la lista

Ejemplo : 

Python3

# initialize a list
my_list = [1, 2, 3, 1, 5, 4]
 
# find length of the list
list_size = len(my_list) 
 
# declare for loop
for itr in range(list_size): 
   
      # check the condition
    if(my_list[itr] == 1): 
       
          # print the indices
        print(itr) 

Producción:

0
3

Método 2: Usar la función enumerate()

En lugar de usar for-loop, podemos usar la función de enumeración. Esta función agrega un contador a un iterable y devuelve el objeto de enumeración.

Sintaxis: [expresión para nombre_elemento en enumerar(nombre_lista) si condición]

dónde

  • Element_name es el nombre del elemento
  • list_name es el nombre de la lista
  • La condición es la condición que debe ser verdadera.

Para esto, crearemos una lista y luego crearemos una función de enumeración para obtener índices de todas las ocurrencias de un elemento en una lista.

Ejemplo :

Python3

# initialize a list
my_list = [1, 2, 3, 1, 5, 4] 
indices = [ind for ind, ele in enumerate(my_list) if ele == 1]
 
# print the indices
print(indices) 

Producción:

[0, 3]

Método 3: Usar el módulo itertools

Itertools son herramientas eficientes en memoria que son útiles por sí mismas o en combinación, por lo que usaremos los métodos count() de este módulo que devolverán un iterador de valores espaciados uniformemente desde el valor inicial.

Sintaxis: [expresión para element_name in zip(count(), list_name) if condition]

  • element_name es el nombre del elemento
  • list_name es el nombre de la lista
  • La condición es la condición que debe ser verdadera.

Para esto, crearemos una lista y luego usando la comprensión con zip() obtendremos índices de todas las ocurrencias de un elemento en una lista. 

Ejemplo: 

Python3

# import count method from itertools
from itertools import count 
 
# initialize a list
my_list = [1, 2, 3, 1, 5, 4]
indices = [ind for ind,
           ele in zip(count(),
                      my_list) if ele == 1]
 
# print the indices
print(indices) 

Producción:

[0, 3]

Método 4: usar la biblioteca NumPy

NumPy es un paquete de procesamiento de arreglos de propósito general, proporciona formas convenientes de usar arreglos en Python. 

Sintaxis: numpy.where(nombre_lista,valor)[índice]

dónde 

  • list_name es el nombre de la lista
  • Valor es el valor a buscar
  • Index es el índice inicial de la array (generalmente será «0»)

Para esto, crearemos una array usando numpy.array() y luego obtendremos todos los índices de los elementos en una array de entrada cuando se cumpla la condición usando los métodos numpy.where().

Ejemplo : 

Python3

# import numpy module
import numpy 
 
# initialize a array
my_list = numpy.array([1, 2, 3, 1, 5, 4]) 
indices = numpy.where(my_list == 1)[0]
 
# display result
print(indices) 

Producción :

[0, 3]

La complejidad de tiempo y espacio para todos los métodos es la misma:

Complejidad de tiempo: O(n)

Complejidad espacial: O(n)

Publicación traducida automáticamente

Artículo escrito por akashdeepkatari y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *