B7 — listas

Iterar Listas y Cadenas

Las listas agrupan múltiples valores en una sola variable. El bucle for te permite recorrer cada elemento y aplicarle operaciones, uno por uno.

Listas

Hasta ahora cada variable guardaba un solo valor. Una lista guarda varios valores en orden, separados por comas y entre corchetes.

numeros  = [1, 2, 3, 4, 5]
nombres  = ["Ana", "Luis", "María"]
mixta    = [10, "hola", 3.14, True]
Definición

Una lista es una colección ordenada y mutable de elementos. Ordenada significa que el orden importa (el primero es siempre el primero). Mutable significa que puedes cambiar, agregar o quitar elementos después de crearla.

Accedes a un elemento por su índice, que empieza en 0:

numeros = [10, 20, 30, 40]
print(numeros[0])   # 10  ← primer elemento
print(numeros[-1])  # 40  ← último elemento

Bucle for

El bucle for recorre cada elemento de una secuencia (lista, cadena, rango…) y ejecuta un bloque de código por cada uno. La variable de iteración toma el valor del elemento en cada vuelta.

for variable in secuencia:
    # código que se ejecuta en cada vuelta

Iterar una lista

numeros = [1, 2, 3, 4, 5]

for numero in numeros:
    print(numero)
# 1
# 2
# 3
# 4
# 5

Iterar una cadena

Las cadenas de texto también son secuencias: puedes recorrerlas letra por letra. Esto es útil para filtrar o transformar texto.

cadena = "Hola Mundo"
vocales = ["a", "e", "i", "o", "u"]

cadena = cadena.lower()   # convertir a minúsculas primero

for letra in cadena:
    if letra in vocales:
        print(letra)
# o
# a
# u
# o

Patrón acumulador

Un patrón muy común es iniciar una variable en cero (o lista vacía) y acumular resultados dentro del bucle:

numeros = [1, 2, 3, 4, 5]
suma = 0

for numero in numeros:
    suma += numero   # equivale a: suma = suma + numero

print("La suma es:", suma)   # La suma es: 15
Ejemplo Calcular el promedio de una lista
calificaciones = [8.5, 9.0, 7.5, 10.0, 6.0]
total = 0

for cal in calificaciones:
    total += cal

promedio = total / len(calificaciones)
print(f"Promedio: {promedio:.2f}")   # Promedio: 8.20

len() devuelve el número de elementos de la lista.

Función range()

Cuando necesitas repetir algo un número fijo de veces usas range(), que genera una secuencia de números sin necesidad de escribirlos a mano.

for i in range(5):
    print(i)
# 0  1  2  3  4

range(inicio, fin, paso) permite mayor control:

for i in range(0, 10, 2):
    print(i)
# 0  2  4  6  8

Función enumerate()

Cuando necesitas el índice y el valor al mismo tiempo, enumerate() te da ambos en cada vuelta sin tener que llevar un contador manual.

nombres = ["Ana", "Luis", "María"]

for i, nombre in enumerate(nombres):
    print(f"{i}: {nombre}")
# 0: Ana
# 1: Luis
# 2: María
Más detalle List comprehensions: for en una línea

Python permite construir listas nuevas a partir de iteraciones en una sola expresión. Se llaman list comprehensions:

numeros  = [1, 2, 3, 4, 5]
cuadrados = [n ** 2 for n in numeros]
print(cuadrados)   # [1, 4, 9, 16, 25]

# Con filtro
pares = [n for n in numeros if n % 2 == 0]
print(pares)       # [2, 4]

Son más concisas que el bucle explícito y se consideran idiomáticas en Python. Úsalas cuando la transformación es simple y el código sigue siendo legible.