Bucles for: iteración sobre secuencias
Introducción
Los bucles for
son una de las estructuras de control más potentes y utilizadas en Python. A diferencia del bucle while
que se ejecuta mientras una condición sea verdadera, el bucle for
está diseñado específicamente para iterar sobre una secuencia de elementos de manera ordenada y predecible. Esta característica hace que sea especialmente útil para trabajar con listas, tuplas, cadenas y otras estructuras de datos secuenciales sin tener que preocuparnos por el control manual de índices o contadores.
En este artículo, veremos cómo funcionan los bucles for
en Python, cómo utilizarlos para recorrer diferentes tipos de secuencias y algunas técnicas avanzadas que harán tu código más elegante y eficiente.
Estructura básica del bucle for
La sintaxis general de un bucle for
en Python es:
for elemento in secuencia:
# Bloque de código a ejecutar en cada iteración
Donde:
elemento
es una variable que tomará el valor de cada elemento de la secuencia en cada iteraciónsecuencia
es cualquier objeto iterable (como una lista, tupla, cadena, etc.)
El bucle se ejecutará una vez por cada elemento en la secuencia, asignando en cada iteración el valor del elemento actual a la variable elemento
.
Iteración sobre diferentes tipos de secuencias
Iteración sobre listas
El caso más común es iterar sobre una lista:
frutas = ["manzana", "plátano", "naranja", "fresa"]
for fruta in frutas:
print(f"Me gusta comer {fruta}")
Salida:
Me gusta comer manzana
Me gusta comer plátano
Me gusta comer naranja
Me gusta comer fresa
Iteración sobre cadenas
También podemos iterar sobre cada carácter de una cadena:
nombre = "Python"
for letra in nombre:
print(letra)
Salida:
P
y
t
h
o
n
Iteración sobre tuplas
Las tuplas funcionan igual que las listas:
dimensiones = (10, 20, 30)
for medida in dimensiones:
print(f"La medida es {medida} cm")
Salida:
La medida es 10 cm
La medida es 20 cm
La medida es 30 cm
Iteración sobre diccionarios
Al iterar sobre un diccionario, por defecto se iteran las claves:
usuario = {
"nombre": "Laura",
"edad": 28,
"ciudad": "Madrid"
}
# Iterando sobre las claves
for clave in usuario:
print(clave)
Salida:
nombre
edad
ciudad
Para iterar sobre los valores:
for valor in usuario.values():
print(valor)
Salida:
Laura
28
Madrid
Para iterar sobre pares clave-valor:
for clave, valor in usuario.items():
print(f"{clave}: {valor}")
Salida:
nombre: Laura
edad: 28
ciudad: Madrid
La función range()
La función range()
es una herramienta muy útil que se utiliza a menudo con bucles for
para generar secuencias de números. Existen tres formas principales de usar range()
:
range(stop)
Genera números desde 0 hasta stop-1:
for i in range(5):
print(i)
Salida:
0
1
2
3
4
range(start, stop)
Genera números desde start hasta stop-1:
for i in range(2, 6):
print(i)
Salida:
2
3
4
5
range(start, stop, step)
Genera números desde start hasta stop-1, con un incremento de step:
for i in range(0, 10, 2):
print(i)
Salida:
0
2
4
6
8
También podemos usar step negativo para contar hacia atrás:
for i in range(10, 0, -2):
print(i)
Salida:
10
8
6
4
2
Técnicas avanzadas
Enumerate: obtener índice y valor
La función enumerate()
nos permite obtener tanto el índice como el valor en cada iteración:
colores = ["rojo", "verde", "azul"]
for indice, color in enumerate(colores):
print(f"Índice {indice}: {color}")
Salida:
Índice 0: rojo
Índice 1: verde
Índice 2: azul
También podemos especificar el valor inicial del índice:
for indice, color in enumerate(colores, start=1):
print(f"Color #{indice}: {color}")
Salida:
Color #1: rojo
Color #2: verde
Color #3: azul
Zip: iterar sobre múltiples secuencias
La función zip()
permite iterar sobre dos o más secuencias simultáneamente:
nombres = ["Ana", "Carlos", "Elena"]
edades = [25, 30, 27]
for nombre, edad in zip(nombres, edades):
print(f"{nombre} tiene {edad} años")
Salida:
Ana tiene 25 años
Carlos tiene 30 años
Elena tiene 27 años
Si las secuencias tienen diferente longitud, zip()
se detendrá cuando se acabe la secuencia más corta.
Casos prácticos
Calcular la suma de una lista de números
numeros = [10, 20, 30, 40, 50]
suma = 0
for numero in numeros:
suma += numero
print(f"La suma es: {suma}") # Imprime: La suma es: 150
Encontrar el número más grande en una lista
numeros = [23, 45, 12, 67, 32, 89, 54]
maximo = numeros[0] # Asumimos que el primer número es el máximo inicialmente
for numero in numeros:
if numero > maximo:
maximo = numero
print(f"El número más grande es: {maximo}") # Imprime: El número más grande es: 89
Crear una tabla de multiplicar
numero = 7
for i in range(1, 11):
resultado = numero * i
print(f"{numero} x {i} = {resultado}")
Salida:
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
7 x 10 = 70
Resumen
Los bucles for
son una herramienta fundamental en Python para recorrer secuencias de datos. Su sintaxis clara y sencilla hace que trabajar con listas, tuplas, cadenas y otras estructuras de datos sea más intuitivo y menos propenso a errores que usar bucles while
con contadores manuales. Además, herramientas como range()
, enumerate()
y zip()
expanden las posibilidades de los bucles for
, permitiéndonos escribir código más conciso y elegante.
En el próximo artículo, exploraremos cómo controlar el flujo de los bucles usando las instrucciones break
, continue
y la cláusula else
, lo que nos dará un mayor control sobre nuestros bucles.