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 -1null 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:

Deja una respuesta

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