Introducción
Las listas son útiles de diferentes maneras en comparación con otros tipos de datos debido a lo versátil que son. En este artículo echaremos un vistazo a una de las operaciones más comunes con las listas: encontrar el índice de un elemento.
Echaremos un vistazo a diferentes escenarios de encontrar un elemento, es decir, encontrar la primera, la última y todas las ocurrencias de un elemento. Así como lo que ocurre cuando el elemento que buscamos no existe.
Usando la función index()
El parámetro element
representa naturalmente el elemento que buscamos. Los parámetros start
y end
son opcionales y representan el rango de índices en el que buscamos el element
.
El valor por defecto de start
es 0
(buscando desde el principio), y el valor por defecto de end
es el número de elementos de la lista (buscando hasta el final de la lista).
La función devuelve la primera posición del element
en la lista que ha podido encontrar, independientemente de cuántos elementos iguales haya después de la primera aparición.
Buscando la primera aparición de un elemento
Usando la función index()
sin establecer ningún valor para start
y end
nos dará la primera aparición del element
que estamos buscando:
my_list = first_occurrence = my_list.index('b')print("First occurrence of 'b' in the list: ", first_occurrence)
Lo que nos daría la salida esperada:
First occurrence of 'b' in the list: 1
Búsqueda de todas las ocurrencias de un elemento
Para encontrar todas las ocurrencias de un elemento, podemos utilizar el parámetro opcional start
de forma que busquemos sólo en determinados segmentos de la lista.
Por ejemplo, digamos que la primera aparición de un elemento en el índice 3
. Para encontrar el siguiente, tendríamos que continuar nuestra búsqueda por la primera aparición de ese elemento después del índice 3
. Repetiríamos este proceso, cambiando el lugar donde comienza nuestra búsqueda, siempre y cuando encontremos nuevas apariciones del elemento:
La ejecución de este código nos daría:
The element was found at:
Aquí hemos tenido que utilizar un bloque try
, ya que la función index()
arroja un error cuando no encuentra el element
especificado en el rango dado. Esto puede resultar inusual para los desarrolladores más acostumbrados a otros lenguajes ya que funciones como estas suelen devolver -1
null
cuando no se encuentra el elemento.
Sin embargo, en Python tenemos que ser cuidadosos y utilizar un bloque try
cuando utilicemos esta función.
Otra forma más ordenada de hacer esto mismo sería utilizando la comprensión de la lista e ignorando la función index()
por completo:
Lo que nos daría la misma salida que antes. Este enfoque tiene la ventaja añadida de no utilizar el bloque try
.
Buscar la última aparición de un elemento
Si necesitas encontrar la última aparición de un elemento en la lista, hay dos enfoques que puedes utilizar con la función index()
:
- Invertir la lista y buscar la primera ocurrencia en la lista invertida
- Recorrer todas las ocurrencias del elemento, y sólo llevar la cuenta de la última ocurrencia
Respecto al primer enfoque, si conociéramos la primera ocurrencia del element
en una lista invertida, podríamos encontrar la posición de la última ocurrencia en la original. Más concretamente, podemos hacerlo restando reversed_list_index - 1
a la longitud de la lista original:
Lo que nos daría el resultado deseado:
6
En cuanto a la segunda aproximación, podríamos retocar el código que utilizamos para encontrar todas las ocurrencias y sólo llevar la cuenta de la última ocurrencia que encontramos:
Lo que nos daría la misma salida: