Longitud de una lista
Si recordamos nuestro último ejemplo, teníamos una lista de piezas en una ferretería. Y utilizamos un bucle for
para recorrer cada elemento de la lista e imprimirlo en la consola.
# Lista de piezas
piezas = ["tornillo", "tuerca", "arandela"]
# Iterando sobre la lista
for pieza in piezas:
print(pieza)
Y si vamos aún más atrás en nuestro estudio, en algún momento iteramos una lista de números:
En ambos casos, utilizamos un bucle for
para recorrer cada elemento de la lista e imprimirlo en la consola.
Uso de la función len()
El problema que se nos presenta es que si nosotros hacemos:
# Lista de piezas
piezas = ["tornillo", "tuerca", "arandela"]
# Iterando sobre la lista
for pieza in piezas:
print(pieza)
Vamos a imprimir el nombre de cada pieza y no el número de su posición en la lista.
Si se nos ocurriera hacer:
# Lista de piezas
piezas = ["tornillo", "tuerca", "arandela"]
# Iterando sobre la lista
for pieza in range(piezas):
print(pieza)
Tampoco funcionaría, porque range()
espera un número entero, no una lista, y mucho menos una lista de cadenas de caracteres (str).
Aquí es donde entra en escena la función len()
(l). La función len()
nos permite obtener la longitud de una lista, es decir, el número de elementos que contiene.
# Lista de piezas
piezas = ["tornillo", "tuerca", "arandela"]
# Iterando sobre la lista
for i in range(len(piezas)): # len(piezas) -> 3 -> range(3) -> [0, 1, 2]
print(piezas[i]) # piezas[0], piezas[1], piezas[2]
Anidamiento de funciones
Si analizamos el código anterior, vemos que estamos anidando funciones. Primero, estamos llamando a la función len()
con el argumento piezas
, que nos devuelve el número de elementos en la lista piezas
.
Luego, estamos llamando a la función range()
con el resultado de len(piezas)
, que nos devuelve una secuencia de números desde 0
hasta len(piezas) - 1
. Finalmente, estamos utilizando estos números como índices para acceder a los elementos de la lista piezas
e imprimirlos en la consola.
Es decir, que el programa iría cambiando el índice de la lista dentro de los corchetes piezas[i]
a parti de la variable i
, para imprimir cada uno de los elementos de la lista piezas
:
Como podemos ver, el código funciona correctamente y nos permite imprimir cada elemento de la lista
piezas
en la consola.
Imprimiendo la ubicación de cada pieza
Pero, ¿qué pasa si queremos imprimir la ubicación de cada pieza en la lista? ¿Cómo podemos hacerlo?
# Lista de piezas
piezas = ["tornillo", "tuerca", "arandela"]
# Iterando sobre la lista
for i in range(len(piezas)):
print(f"{i}: {piezas[i]}")
En este caso, estamos utilizando la variable
i
para imprimir la ubicación de cada pieza en la listapiezas
, junto con el nombre de la pieza. La variablei
se incrementa en cada iteración del buclefor
, y se utiliza como índice para acceder a los elementos de la listapiezas
.Como resultado, obtenemos la ubicación de cada pieza en la lista, junto con su nombre, en la consola.
De esta manera, podemos imprimir tanto el nombre de cada pieza como su ubicación en la lista, utilizando la variable
i
como índice para acceder a los elementos de la listapiezas
.
Humanizando los datos
En este caso, estamos utilizando la variable i
para imprimir la ubicación de cada pieza en la lista piezas
. Pero, ¿qué pasa si queremos imprimir la ubicación de cada pieza en la lista, pero comenzando desde 1
en lugar de 0
? ¿Cómo podemos hacerlo?
# Lista de piezas
piezas = ["tornillo", "tuerca", "arandela"]
# Iterando sobre la lista
for i in range(len(piezas)):
print(f"{i + 1}: {piezas[i]}")
En este caso, estamos utilizando la expresión
i + 1
para imprimir la ubicación de cada pieza en la listapiezas
, comenzando desde1
en lugar de0
. La expresióni + 1
incrementa el valor de la variablei
en1
en cada iteración del buclefor
, y se utiliza como índice para acceder a los elementos de la listapiezas
.Como resultado, obtenemos la ubicación de cada pieza en la lista, comenzando desde
1
, junto con su nombre, en la consola.
¡Para recordar!
Recuerda que en Python, los índices comienzan en 0
, por lo que si queremos imprimir la ubicación de cada pieza en la lista comenzando desde 1
, debemos sumar 1
al valor del índice i
en cada iteración del bucle for
.