CodeForge

Python de Cero a Experto / Control y colecciones

Comprehensions: la joya de Python

Teoría22 min20 XP

Aquí llega una de las características más queridas de Python: las COMPREHENSIONS. Son una forma concisa y elegante de crear una lista (o diccionario, o set) transformando o filtrando otra —lo que con un bucle tomaría varias líneas, aquí cabe en una, y se lee mejor—. Dominar las comprehensions es el salto del código "que funciona" al código PYTHÓNICO. Hoy las aprendes y las vas a usar para siempre.

La receta en una línea

List comprehension: transformar

Compara el bucle tradicional con la comprehension —hacen lo mismo—:

La sintaxis es [expresion for elemento in secuencia]: se lee "la EXPRESIÓN, por cada ELEMENTO en la SECUENCIA". [g * 1.19 for g in gastos] crea una lista nueva con cada gasto multiplicado por 1.19. Hace exactamente lo mismo que el bucle con append, pero en una línea que expresa la intención directamente. No modifica la lista original: crea una NUEVA.

Con condición: filtrar

Comprehensions de diccionario y set

¿Qué produce [g * 2 for g in [1, 2, 3, 4] if g % 2 == 0] y dónde va el if para filtrar vs para transformar?

Mini-reto

Procesa gastos de Mi Bolsillo con comprehensions: 1) dada gastos = [4000, 2800, 18000, 5000, 1200], crea con una comprehension una lista con cada gasto + su IVA (× 1.19); 2) crea otra con SOLO los gastos mayores a 3000 (filtro con if al final); 3) crea una lista de etiquetas "caro"/"barato" con el ternario (if/else al inicio); 4) bonus: una dict comprehension {gasto: gasto * 1.19 for ...} que mapee cada gasto a su valor con IVA. Compara cuánto más corto es que con bucles.

Qué sigue

¡Módulo 2 casi cerrado! Dominas el control de flujo (decisiones, bucles) y todas las colecciones (listas, tuplas, sets, diccionarios, comprehensions). El reto del módulo los junta en un análisis de gastos de verdad: una lista de gastos, filtros, totales por categoría y comprehensions trabajando en equipo. Después, el módulo 3 traerá las FUNCIONES —empaquetar lógica reutilizable—.