Funciones y Lambda
Funciones y lambdas
Las funciones encapsulan lógica que reutilizas y dan nombre a lo que hace tu código. En ciencia de datos las usarás para limpiar columnas, calcular métricas y transformar valores. Las lambdas, además, son funciones anónimas de una línea que encajan perfecto con map, filter y el método apply de Pandas.
Definir funciones
# Función básica con retorno
def saludar(nombre):
return f"¡Hola {nombre}!"
# Parámetro con valor por defecto
def saludar(nombre="amigo"):
return f"¡Hola {nombre}!"
# Cálculo con varios parámetros
def calcular_imc(peso, altura):
return peso / (altura ** 2)
# Retorno múltiple (devuelve una tupla)
def estadisticas(numeros):
return min(numeros), max(numeros), sum(numeros) / len(numeros)
minimo, maximo, promedio = estadisticas([1, 2, 3, 4, 5])Funciones lambda
Una lambda es una función anónima que cabe en una expresión. Úsala para transformaciones cortas que no merecen un def completo.
# Sintaxis: lambda argumentos: expresión
cuadrado = lambda x: x ** 2
cuadrado(5) # 25
numeros = [1, 2, 3, 4, 5]
# map: aplica la función a cada elemento
cuadrados = list(map(lambda x: x**2, numeros)) # [1, 4, 9, 16, 25]
# filter: conserva los que cumplen la condición
pares = list(filter(lambda x: x % 2 == 0, numeros)) # [2, 4]
# sorted: ordenar por una clave calculada
personas = [{'nombre': 'Ana', 'edad': 25}, {'nombre': 'Luis', 'edad': 30}]
ordenado = sorted(personas, key=lambda p: p['edad'])Atención
No abuses de las lambdas. Si la lógica tiene varias líneas o necesita un nombre descriptivo, usa def: tu código quedará más claro y fácil de depurar.
Funciones integradas muy útiles
numeros = [3, 1, 4, 1, 5, 9, 2, 6]
sum(numeros) # 31
min(numeros) # 1
max(numeros) # 9
# enumerate: índice + valor a la vez
for i, num in enumerate(numeros):
print(f"Índice {i}: {num}")
# zip: recorrer dos listas en paralelo
nombres = ['Ana', 'Luis', 'María']
edades = [25, 30, 28]
for nombre, edad in zip(nombres, edades):
print(f"{nombre} tiene {edad} años")¿Cuál es la diferencia entre map y una list comprehension?
Ambas transforman un iterable. map(función, iterable) devuelve un objeto perezoso que conviene convertir con list(); la comprehension [f(x) for x in iterable] suele ser más legible en Python. Para transformaciones simples, elige la que tu equipo lea con más comodidad.
¿Qué devuelve list(filter(lambda x: x > 2, [1, 2, 3, 4]))?
filter conserva solo los elementos donde la lambda devuelve True, es decir los mayores que 2: [3, 4].Ejercicio práctico
Objetivo: combinar funciones, lambdas y herramientas integradas.
- Escribe una función
normalizar(texto)que devuelva el texto en minúsculas y sin espacios extremos. - Dada una lista de precios, usa
mapcon una lambda para aplicar un 21% de IVA. - Con
filter, quédate solo con los precios finales mayores a 100. - Usa
zippara emparejar cada producto con su precio final e imprímelos.
Entregable: notebook con la lista de precios con IVA y la lista filtrada impresas.
Para recordar
- Las funciones dan nombre y reutilización; las lambdas resuelven transformaciones cortas.
maptransforma,filterselecciona,sortedordena por una clave.enumerateyzipevitan índices manuales propensos a errores.