Programación con Python para Datos · Programación

Comprensiones y funciones lambda

Escribir código Python expresivo con comprensiones y funciones lambda, y saber cuándo favorecen o dañan la legibilidad.

Comprensiones y funciones lambda

Ilustracion de Python para datos: DataFrame, graficas y arrays de NumPy.
Python para ciencia de datos: NumPy, pandas y manipulacion de datos.

Mapa conceptual

Del bucle al «qué» En lugar de un bucle con append, una comprensión dice qué quieres en una sola línea. Es más cercano al «qué» y menos al «cómo». Solo recuerda: legibilidad primero.

Comprensión de lista

Una comprensión construye una lista aplicando una expresión a cada elemento de un iterable, con opción de filtrar. Es la forma idiomática de mapear y filtrar sin escribir el bucle y el append a mano.

Dict y set

Funciones lambda

Una lambda define una función anónima de una sola expresión, usable donde hace falta un objeto invocable sin declararla con def: típico al ordenar con clave o al pasar una transformación breve.

Construcciones declarativas que reemplazan bucles manuales.
EstructuraEjemplo (idea)Devuelve
List comprehension[x*x para x en nums]lista de cuadrados
Con filtro[x para x en nums si x 0]solo los positivos
Dict comprehensionk: len(k) para k en keysdiccionario de longitudes
Lambdalambda p: p[1] para ordenarfunción clave exprés

¿Cuál es la ventaja principal de una comprensión frente a un bucle con append?

Cuándo duele

Una comprensión anidada con dos filtros y una expresión larga es difícil de leer: si necesitas más de una o dos líneas lógicas, mejor un bucle normal. La legibilidad manda: la concisión no es un trofeo.

Lambda o def

map y filter

map aplica una función a cada elemento; filter conserva los que cumplen un predicado. En Python, muchas veces una comprensión es más clara que combinar map y filter. Úsalos cuando encajen con una función ya existente.

Una lambda puede contener varias sentencias y devoluciones con return.

Errores frecuentes

Expresivo pero legible

Python premia leer como se escribe. Una comprensión bien nombrada es casi prosa: cuadrados de los pares mayores que dos. Si se puede leer así en voz alta, vas por buen camino.

Decide qué construcción corresponde:

Comprension
Lambda
def normal

Python Docs
Sección sobre comprensiones de lista y funciones.

Toma un bucle con append que filtra y transforma. Reescríbelo como comprensión y evalúa: ¿gana en claridad? Si la lógica creció demasiado, ¿qué hubieras preferido?

Documentacion pandas
Guia de referencia para manipulacion de datos en Python.