En esta guía, aprenderá a encontrar el índice de un elemento en una lista de Python, tanto utilizando iteraciones simples como el método de lista incorporado index().
Cuando trabaje con listas de Python, puede que necesite averiguar el índice en el que aparece un elemento concreto. Puede hacerlo
- Recorriendo la lista en bucle y comprobando si el elemento situado en el índice actual es igual al valor concreto
- Utilizando el método incorporado en la lista
index()
Aprenderá ambas cosas en este tutorial. Empecemos.👩🏽💻
Listas en Python, revisitadas
En Python, una lista es una colección de elementos, del mismo o distinto tipo de datos. Son mutables; puede modificarlas in situ sin tener que crear una lista nueva.
Considere este ejemplo frutas
: una lista de 5 frutas diferentes.
frutas = ["manzana", "mango", "fresa", "granada", "melón"]
Puede obtener la longitud de cualquier objeto Python utilizando la función incorporada len(
). Así, puede llamar a la función len
() con el objeto lista(
frutas) como argumento para obtener su longitud, como se muestra a continuación.
len(frutas)
# Salida 5
Utilizaremos la lista de frutas
como ejemplo en este tutorial.
Indexación en las listas de Python
Python sigue la indexación cero. Así que en cualquier iterable de Python, el primer elemento está en el índice 0, el segundo elemento está en el índice 1, y así sucesivamente. Si la longitud del iterable es k
, entonces el último elemento está en el índice k - 1
.
En Python, puede utilizar la función range() para obtener índices a medida que realiza bucles a través de iterables.
Nota: Cuando realiza un bucle a través de range
(k)
, obtiene los índices 0,1,2,…,(k-1). Así que estableciendok = len(list)
, puede obtener la lista de todos los índices válidos.
La siguiente celda de código lo explica
for i in range(len(frutas)):
print(f "i:{i}, fruta[{i}] es {frutas<x><x>[i]</x></x>}")
# Salida
i:0, fruta[ 0] es manzana
i:1, fruta[ 1] es mango
i:2, fruta[ 2] es fresa
i:3, fruta[ 3] es granada
i:4, fruta[ 4] es melón
Ahora que hemos cubierto los conceptos básicos de las listas de Python vamos a aprender cómo encontrar el índice de un elemento de una lista.
Encontrar el índice de un elemento de una lista por iteración utilizando bucles for
Consideremos la lista fruits
de la sección anterior. Aprenderemos a encontrar el índice de un elemento específico de esta lista por iteración utilizando el
bucle for.
Uso del bucle for y la función range()
Fijemos el objetivo
: el valor que buscamos en la lista.
Puede utilizar el bucle for
y la función range( )
para obtener la lista de índices de 0
a len(frutas) - 1
.
- Recorra la lista de frutas accediendo a cada índice.
- Compruebe si el elemento en el índice actual i es igual al objetivo.
- Si
es True
, imprima que se ha encontrado elobjetivo
en el índicei
.
frutas = ["manzana", "mango", "fresa", "granada", "melón"]
objetivo = "mango"
para i en rango(len(frutas)):
if frutas<x><x>[i]</x></x> == objetivo
print(f"{objetivo} encontrado en el índice {i}")
# Salida
mango encontrado en el índice 1
En este ejemplo, la cadena objetivo "mango
» aparece exactamente una vez (en el índice 1) en la lista frutas
.
Sin embargo, a veces el valor objetivo aparece más de una vez o no aparece en absoluto. Para manejar estos casos, modifiquemos el bucle anterior y envolvamos el contenido dentro de una función llamada encontrar_en_lista
.
Entender la definición de la función
La función find_in_list
tiene dos parámetros:
target
: el valor que está buscando, ypy_list
: la lista Python en la que está buscando.
def encontrar_en_lista(objetivo,py_lista):
objetivo_indices = []
for i in range(len(frutas)):
if frutas<x><x>[i]</x></x> == objetivo:
target_indices.append(i)
si índices_objetivo == []:
print("¡Lo sentimos, no se ha encontrado el objetivo!")
si no
print(f"{objetivo} se encuentra en los índices {índices_objetivo}")
En el cuerpo de la función, inicializamos una lista vacía target_indices
. Recorremos la lista en bucle y accedemos a los elementos de la lista. Si el objetivo se ha encontrado en un índice concreto, añadimos ese índice a la lista target_indices
utilizando el método append()
.
Nota: En Python,
list.append(item)
añadeel elemento
al final de lalista
.
- Si nunca se encuentra el objetivo, entonces
target_indices
es una lista vacía; se notifica al usuario que el objetivo no está presente en la lista. - Si el objetivo se encuentra en más de un índice, entonces
target_indices
contiene todos esos índices.
A continuación, redefinamos la lista de frutas
como se muestra.
Esta vez buscamos la cadena objetivo
"mango
«, que aparece dos veces: en los índices 1 y 4.
frutas = ["manzana", "mango", "fresa", "granada", "mango", "melón"]
objetivo = "mango"
find_in_list(objetivo,frutas)
# Salida
mango se encuentra en los índices [1, 4]
Al llamar a la función find_in_list
con target
y fruits
como argumentos, vemos que se devuelven ambos índices.
objetivo = "nabo
find_in_list(objetivo,frutas)
# Salida
Lo sentimos, ¡no se ha encontrado el objetivo!
Si intenta buscar "
nabo», que no está presente en la lista de frutas
, obtendrá un mensaje de que no se ha encontrado el objetivo.
Uso del bucle for y la función enumerate()
En Python, puede utilizar la función enumerate
() para acceder simultáneamente al índice y a los elementos, sin tener que utilizar la función range()
.
La siguiente celda de código muestra cómo puede utilizar la función enumerate
() para obtener tanto los índices como los elementos.
frutas = ["manzana", "mango", "fresa", "granada", "mango", "melón"]
para índice,fruta en enumerar(frutas):
print(f "Índice {índice}: {fruta}")
# Salida
Índice 0: manzana
Índice 1: mango
Índice 2: fresa
Índice 3: granada
Índice 4: mango
Índice 5: melón
Ahora, reescribamos la función de Python para encontrar el índice de los elementos de la lista utilizando la función enumerate()
.
def encontrar_en_lista(objetivo,py_lista):
indices_objetivo = []
for índice, fruta in enumerar(frutas):
if fruta == objetivo:
target_indices.append(index)
si objetivo_índices == []:
print("¡Lo sentimos, no se ha encontrado el objetivo!")
si no
print(f"{objetivo} se encuentra en los índices {índices_objetivo}")
Al igual que en la sección anterior, ahora puede llamar a la función find_in_list
con argumentos válidos.
Puede traducir la definición de la función anterior a una comprensión de lista equivalente y lo haremos en la siguiente sección.
Encontrar el índice de un elemento de la lista por iteración utilizando la comprensión de lista
Las comprensiones de listaen Python le permiten crear listas a partir de listas existentes basándose en alguna condición. He aquí la construcción general:
nueva_lista = [<salida> para <elementos en iterables existentes> si <condición es verdadera>]
La figura siguiente describe cómo identificar los elementos de la comprensión de listas; utilizando esto, puede convertir la función encontrar_en_lista
en una comprensión de listas.
Utilizando lo anterior, la expresión para que la comprensión de lista cree índices objetivo es la siguiente.
indices_objetivo = [indice para indice,fruta en enumerar(frutas) si fruta==objetivo]
Como ejercicio, puede intentar ejecutar el fragmento de código anterior para otros ejemplos.
Encontrar el índice de un elemento de la lista utilizando el método index()
Para encontrar el índice de un elemento en una lista de Python, también puede utilizar el método incorporado .index(
). He aquí la sintaxis general:
list.index(valor,inicio,fin)
Parseando el método anterior:
valor
es el valor objetivo que está buscando.inicio
yfin
son argumentos posicionales opcionales; puede utilizarlos para buscar el índice de un elemento en la porción de lista que comienza eninicio
y se extiende hastafin - 1
.
Nota: El método .index( ) sólo devuelve el índice de la primera aparición del
valor
enla lista
. Aunque encuentre el índice de un elemento en una rebanada de lista [inicio: fin-1], este método devuelve sólo el índice correspondiente a la primera aparición del elemento.
Volvamos a nuestro ejemplo para entender cómo funciona el método .index()
.
frutas = ["manzana", "mango", "fresa", "granada", "mango", "melón"]
objetivo = "mango"
fruits.index(objetivo)
1
Aunque hay dos apariciones de "mango
» en la lista de frutas
, puede ver que sólo se ha devuelto el índice de la primera aparición.
Para obtener el índice de la segunda ocurrencia de mango, podemos buscar a través de la rebanada de la lista comenzando en el índice 2 y extendiéndonos hasta el índice 5, como se muestra a continuación.
frutas.indice(objetivo,2,5)
4
Cómo manejar errores de valor en Python
Veamos ahora qué ocurre si intenta encontrar el índice de un elemento que no está presente en la lista, digamos, 'zanahoria'
.
target = "zanahoria"
frutas.index(objetivo)
# Salida
---------------------------------------------------------------------------
ValueError Traceback (última llamada más reciente)
<ipython-input-17-81bd454e44f7> en <module>()
1 target = "zanahoria"
2
---->
3 frutas.index(objetivo)
ValueError: 'zanahoria' no está en la lista
Como se ve en la celda de código anterior, esto lanza un ValueError. En Python, puede manejar esto como una excepción utilizando los bloques try
y except
.
La sintaxis general para utilizar try-except
es la siguiente.
try:
# para hacer esto
except <TipoError>:
# hacer esto para manejar <TipoError> como excepción
Utilizando los bloques try-except anteriores, podemos manejar ValueError como una excepción.
target = "zanahoria"
try:
frutos.index(objetivo)
except ValueError:
print(f "Lo sentimos, no se ha podido encontrar {objetivo} en la lista")
# Salida
Lo sentimos, no se ha podido encontrar la zanahoria en la lista
El código anterior hace lo siguiente
- Si el objetivo está presente en la lista, devuelve el índice del objetivo.
- Si el objetivo no está presente, maneja ValueError como una excepción e imprime el mensaje de error.
Resumiendo
He aquí un resumen de los diferentes métodos que ha aprendido para encontrar el índice de un elemento en una lista de Python.
- Puede utilizar el bucle for de Python y la función range() para obtener los elementos y sus respectivos índices. Compruebe si los elementos de los índices coinciden con el objetivo.
- También puede utilizar la función enumerate () para acceder simultáneamente al elemento y al índice.
- Puede utilizar los dos métodos anteriores dentro de una expresión de comprensión de lista.
- Para encontrar el índice de un elemento en una lista, también puede utilizar el método incorporado .index().
- list.index(valor ) devuelve el índice de la primera aparición del valor en la lista. Si el valor no está presente, lanza un ValueError.
- Puede buscar en una determinada porción de la lista utilizando list.index(value , start, end) para buscar la aparición de un valor en la porción de la lista [start:end-1].
A continuación, aprenda a ordenar un diccionario Python por clave o por valor. ¡Feliz programación en Python!