Categorías
Curso Python

Funciones Lambda en Python

Las funciones lambda en Python son funciones anónimas, es decir, funciones definidas sin un nombre. A diferencia de las funciones normales definidas con la palabra clave def, las funciones lambda se definen usando la palabra clave lambda. Son útiles cuando necesitamos una función para una operación simple que se utilizará solo una vez o dentro de una expresión más grande.

Sintaxis de las Funciones Lambda

La sintaxis básica de una función lambda es:

lambda argumentos: expresión
  • argumentos: Una lista de parámetros separados por comas.
  • expresión: Una única expresión que se evalúa y devuelve el valor.

Las funciones lambda pueden tener cualquier número de argumentos pero solo una expresión. La expresión se evalúa y se devuelve su resultado automáticamente.

Ejemplos Básicos
Aquí hay algunos ejemplos básicos de funciones lambda:

# Suma de dos valores usando una función lambda
sum_two_values = lambda first_value, second_value: first_value + second_value
print(sum_two_values(2, 4))  # Salida: 6

# Multiplicación de dos valores y resta de 3 usando una función lambda
multiply_values = lambda first_value, second_value: first_value * second_value - 3
print(multiply_values(2, 4))  # Salida: 5

# Función lambda dentro de otra función
def sum_three_values(value):
    return lambda first_value, second_value: first_value + second_value + value

print(sum_three_values(5)(2, 4))  # Salida: 11

Explicación:

  • Suma de dos valores:
    • sum_two_values es una función lambda que toma dos parámetros first_value y second_value y devuelve su suma.
  • Multiplicación y resta:
    • multiply_values es una función lambda que toma dos parámetros, los multiplica y resta 3 del resultado.
  • Función lambda dentro de otra función:
    • sum_three_values es una función normal que devuelve una función lambda. La función lambda suma first_value, second_value y value.

Uso de Lambdas en Funciones de Orden Superior

Las funciones lambda son especialmente útiles cuando se utilizan con funciones de orden superior como map(), filter() y reduce(). Estas funciones toman otra función como argumento y la aplican a una secuencia de elementos.

# Uso de lambda con map para multiplicar cada número por 2
numbers = [1, 2, 3, 4, 5]
doubled_numbers = list(map(lambda x: x * 2, numbers))
print(doubled_numbers)  # Salida: [2, 4, 6, 8, 10]

# Uso de lambda con filter para filtrar números pares
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # Salida: [2, 4]

# Uso de lambda con reduce para sumar todos los números
from functools import reduce
total_sum = reduce(lambda x, y: x + y, numbers)
print(total_sum)  # Salida: 15

Explicación:

  • map():
    • Aplica la función lambda a cada elemento de la lista numbers para multiplicar cada uno por 2.
  • filter():
    • Utiliza la función lambda para filtrar los números pares de la lista numbers.
  • reduce():
    • Aplica la función lambda de manera acumulativa a los elementos de numbers para calcular la suma total.

Ejemplo Adicional: Ordenación con Lambdas
Las funciones lambda también son útiles para definir claves de ordenación personalizadas.

# Lista de tuplas
students = [("Alice", 25), ("Bob", 22), ("Charlie", 23)]

# Ordenar por edad utilizando una función lambda como clave
sorted_students = sorted(students, key=lambda student: student[1])
print(sorted_students)  # Salida: [('Bob', 22), ('Charlie', 23), ('Alice', 25)]

Explicación:

  • sorted_students es una lista de tuplas ordenada por la edad del estudiante (el segundo elemento de cada tupla) utilizando una función lambda como clave de ordenación.

Conclusión

Las funciones lambda en Python son una herramienta poderosa para escribir funciones simples de manera concisa y anónima. Son especialmente útiles cuando se combinan con funciones de orden superior y para definir claves de ordenación personalizadas. Al entender y utilizar funciones lambda, podemos escribir código más compacto y legible, aprovechando la flexibilidad y expresividad de Python.