¿Qué es una función lambda?
¿Qué es una función lambda?
Una función lambda es una función pequeña y anónima (sin nombre) que se puede definir en una sola línea de código.
Analogía: El Chef vs. Comida Rápida
Función normal → Como un chef que contrata para trabajar permanentemente en tu restaurante (tiene nombre, está definida formalmente)
Función lambda → Como pedir comida para llevar: la necesitas rápido, para una tarea específica, y no te importa el nombre del cocinero
Sintaxis Básica
lambda argumentos: expresiónEjemplos Sencillos
Ejemplo 1: Función simple
# Función normal
def duplicar(x):
return x * 2
# Función lambda equivalente
duplicar = lambda x: x * 2
print(duplicar(5)) # Resultado: 10
print(duplicar(3)) # Resultado: 6Ejemplo 2: Usando lambda directamente
# Aplicando lambda directamente sin asignar a variable
resultado = (lambda a, b: a + b)(5, 3)
print(resultado) # Resultado: 8Ejemplo 3: Con múltiples parámetros
# Lambda con dos parámetros
multiplicar = lambda x, y: x * y
print(multiplicar(4, 5)) # Resultado: 20
# Lambda con tres parámetros
promedio = lambda a, b, c: (a + b + c) / 3
print(promedio(10, 20, 30)) # Resultado: 20.0Donde son más útiles: con funciones como sorted(), filter(), map()
Ejemplo 4: Ordenar una lista
personas = [("Ana", 25), ("Carlos", 18), ("Beatriz", 30)]
# Ordenar por edad (segundo elemento de cada tupla)
orden_edad = sorted(personas, key=lambda persona: persona[1])
print(orden_edad) # [('Carlos', 18), ('Ana', 25), ('Beatriz', 30)]
# Ordenar por nombre (primer elemento de cada tupla)
orden_nombre = sorted(personas, key=lambda persona: persona[0])
print(orden_nombre) # [('Ana', 25), ('Beatriz', 30), ('Carlos', 18)]Ejemplo 5: Filtrar elementos
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# Filtrar solo números pares
pares = list(filter(lambda x: x % 2 == 0, numeros))
print(pares) # Resultado: [2, 4, 6, 8, 10]
# Filtrar números mayores a 5
mayores_5 = list(filter(lambda x: x > 5, numeros))
print(mayores_5) # Resultado: [6, 7, 8, 9, 10]Ejemplo 6: Transformar elementos
numeros = [1, 2, 3, 4, 5]
# Elevar al cuadrado cada número
cuadrados = list(map(lambda x: x ** 2, numeros))
print(cuadrados) # Resultado: [1, 4, 9, 16, 25]
# Convertir a string con prefijo
textos = list(map(lambda x: f"Número: {x}", numeros))
print(textos) # ['Número: 1', 'Número: 2', 'Número: 3', 'Número: 4', 'Número: 5']Cuándo usar lambda vs función normal
Usa lambda cuando:
La función es muy simple (1 línea)
Solo la necesitas una vez
La usas como argumento para otra función
Usa función normal cuando:
La lógica es más compleja
La vas a reutilizar
Necesitas documentación o es más legible con nombre
# ✅ BIEN: lambda para tarea simple
numeros = [1, 2, 3]
doblados = list(map(lambda x: x * 2, numeros))
# ❌ MAL: lambda para lógica compleja
# (lambda x: True if x > 0 else (False if x == 0 else "negativo"))(5)Ejercicio Práctico
# Dada esta lista de productos
productos = [
{"nombre": "Laptop", "precio": 800},
{"nombre": "Mouse", "precio": 25},
{"nombre": "Teclado", "precio": 75},
{"nombre": "Monitor", "precio": 300}
]
# 1. Ordenar por precio (de menor a mayor)
por_precio = sorted(productos, key=lambda p: p["precio"])
print("Por precio:", por_precio)
# 2. Filtrar productos caros (más de $100)
caros = list(filter(lambda p: p["precio"] > 100, productos))
print("Caros:", caros)
# 3. Aplicar 10% de descuento
con_descuento = list(map(lambda p: {"nombre": p["nombre"], "precio": p["precio"] * 0.9}, productos))
print("Con descuento:", con_descuento)Resumen
Lambda = función anónima y compacta
Sintaxis:
lambda parametros: expresionIdeales para operaciones simples de una línea
Muy útiles con
sorted(),filter(),map()No abusar - si es complejo, mejor usar función normal
¿Te quedó claro? ¿Quieres que profundice en algún aspecto específico?
Comentarios
Publicar un comentario