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