Iteración en Python: for, while y técnicas avanzadas

Python ofrece mecanismos flexibles para repetir operaciones mediante ciclos. A diferencia de otros lenguajes, sus ciclos están diseñados para trabajar directamente con objetos iterables, lo que simplifica la manipulación de colecciones. A continuación, se exploran los ciclos for y while, sus controles avanzados y técnicas eficientes para procesar datos.

Ciclo for: Iteración sobre secuencias

El ciclo for itera sobre cualquier objeto iterable: listas, cadenas, diccionarios, rangos o generadores. No requiere índices ni condiciones numéricas explícitas.

# Iteración sobre una lista de números
for valor in [10, 20, 30, 40]:
    print(f"Valor actual: {valor}")

# Recorrido de caracteres en una cadena
for letra in "Desarrollo":
    print(letra.upper())

# Acceso a claves y valores en un diccionario
datos = {"nombre": "Ana", "edad": 28, "ciudad": "Madrid"}
for clave, valor in datos.items():
    print(f"{clave}: {valor}")

Ciclo while: Repetición condicional

Este ciclo ejecuta un bloque mientras una expresión lógica sea verdadera. Ideal cuando el número de iteraciones no es predecible.

# Contador ascendente con control de límite
limite = 7
contador = 1

while contador <= limite:
    if contador % 3 == 0:
        print(f"Múltiplo de 3: {contador}")
    contador += 1

# Uso con entrada del usuario
respuesta = ""
while respuesta.lower() != "salir":
    respuesta = input("Escribe 'salir' para terminar: ")
print("Sesión finalizada.")

Control de flujo en ciclos

Python permite modificar el comportamiento de los ciclos con tres instrucciones clave.

# break: interrumpe el ciclo por completo
for i in range(15):
    if i > 10:
        break
    print(f"Iteración: {i}")

# continue: salta a la siguiente iteración
for n in range(12):
    if n % 4 == 0:
        continue
    print(f"No divisible por 4: {n}")

# else en ciclos: se ejecuta si no hubo break
for intento in range(3):
    if intento == 2:
        print("Último intento.")
        break
else:
    print("Todos los intentos completados sin interrupción.")

Técnicas avanzadas: comprensiones y generadores

Las comprensiones permiten construir colecciones en una sola línea, mejorando la legibilidad y eficiencia.

# Comprensión de lista: crea una lista con cuadrados
cuadrados_lista = [num ** 2 for num in range(1, 8) if num % 2 != 0]

# Comprensión de diccionario: mapea claves a valores transformados
precios = {"manzana": 1.2, "naranja": 0.8, "plátano": 0.6}
precios_con_descuento = {fruta: precio * 0.9 for fruta, precio in precios.items()}

# Generador: produce valores bajo demanda, sin almacenar en memoria
generador_cuadrados = (x * x for x in range(1000000))
# Solo se calculan cuando se consumen
primeros_tres = [next(generador_cuadrados) for _ in range(3)]

¿Cuándo usar cada tipo de ciclo?

  • Usa for cuando recorras una colección conocida: listas, archivos, rangos o datos estructurados.
  • Usa while cuando la condición de parada dependa de un estado dinámico: entrada de usuario, lectura de sensores o procesos asincrónicos.

Las comprensiones son preferibles para transformaciones simples de listas, mientras que los generadores son esenciales para manejar flujos grandes sin consumir memoria excesiva.

Etiquetas: Python for-loop while-loop list-comprehension generator-expression

Publicado el 8-2 14:30