¿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

python
lambda argumentos: expresión

Ejemplos Sencillos

Ejemplo 1: Función simple

python
# 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: 6

Ejemplo 2: Usando lambda directamente

python
# Aplicando lambda directamente sin asignar a variable
resultado = (lambda a, b: a + b)(5, 3)
print(resultado)  # Resultado: 8

Ejemplo 3: Con múltiples parámetros

python
# 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.0

Donde son más útiles: con funciones como sorted()filter()map()

Ejemplo 4: Ordenar una lista

python
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

python
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

python
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

python
# ✅ 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

python
# 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

  • Sintaxislambda parametros: expresion

  • Ideales 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

Entradas populares de este blog

¿Qué es un Closure?

Calculadora de edad

Funciones en Python: con y sin paréntesis