Saltar a contenido

Comprensión de Colecciones (Comprehensions)

La Comprensión es una sintaxis compacta que permite crear nuevas colecciones (listas, diccionarios o sets) en una sola línea de código. No es solo "azúcar sintáctico" para escribir menos; internamente, Python optimiza estas operaciones para que sean más rápidas que un bucle for convencional.


Estructura de una List Comprehension

Para entender cómo funciona, comparemos un bucle tradicional con una comprensión. Queremos crear una lista con los cuadrados de los números del 0 al 4.

Método Tradicional: 1. Crear lista vacía. 2. Hacer un bucle for. 3. Hacer .append().

Método de Comprensión:

cuadrados = [n ** 2 for n in range(5)]

La lógica se lee así:

"Haz ESTO para cada ELEMENTO en esta SECUENCIA".


Comprensión con Condiciones (Filtros)

Podemos añadir un if al final para decidir qué elementos incluimos en la nueva lista. Esto actúa como un filtro.

Ejemplo: Solo queremos los números pares.

pares = [n for n in range(10) if n % 2 == 0]


Comprensión de Diccionarios y Sets

Esta técnica no se limita a las listas. También puedes crear diccionarios o conjuntos al vuelo:

  • Sets: {n for n in "abracadabra"} (Crea un set de letras únicas).
  • Diccionarios: {n: n**2 for n in range(3)} (Crea {0: 0, 1: 1, 2: 4}).

¿Cuándo usarla y cuándo no?

  1. Úsala cuando: La lógica sea simple y directa. Mejora la legibilidad y el rendimiento.
  2. Evítala cuando: La expresión sea demasiado larga o compleja. Si necesitas más de dos líneas de lógica, es mejor usar un bucle for tradicional para que otros programadores (o tú mismo en el futuro) puedan entenderlo.

Reto: El Filtro de Precios

Imagina que recibes una lista de precios y necesitas dos cosas: convertir los precios de pesos a dólares y filtrar solo aquellos que sean "precios premium" (mayores a 100 USD).

Instrucciones: 1. Tienes la lista precios_pesos = [2000, 500, 3000, 100, 5000]. 2. Supón que el tipo de cambio es 1 USD = 20 Pesos. 3. Crea la variable precios_usd usando una comprensión que divida cada precio por 20. 4. Crea la variable precios_premium usando otra comprensión que tome los precios_usd pero solo si son mayores a 100.

# Crea tus comprensiones aquí: