Las funciones lambda y las funciones de orden superior son características poderosas de Python que permiten trabajar con funciones de manera más concisa y flexible.
Funciones LambdaUna función lambda es una función anónima que se define en una sola línea. Se utiliza comúnmente para operaciones simples que se pueden expresar en una única expresión.
suma = lambda x, y: x + y
resultado = suma(3, 5)
print(resultado)
# Salida: 8 Aquí, la función suma toma dos argumentos y devuelve su suma.
Supongamos que queremos ordenar una lista de tuplas que contienen nombres y edades, y queremos ordenarla por edad:
personas = [("Urian", 25), ("Uriany", 22), ("Luis", 30)]
# Ordenar la lista por la segunda posición (edad)
personas_ordenadas = sorted(personas, key=lambda persona: persona[1])
print(personas_ordenadas)
# Salida: [('Uriany', 22), ('Urian', 25), ('Luis', 30)] En este contexto, la función lambda toma una tupla persona y devuelve el segundo elemento (edad) para realizar la comparación durante la ordenación.
funciones de orden superiorSon funciones que pueden tomar otras funciones como argumentos o devolver funciones como resultado. Algunas de las funciones de orden superior más comunes en Python son map(), filter(), y reduce().
Uso de map()La función map() aplica una función a todos los elementos de un iterable (como una lista) y devuelve un nuevo iterable con los resultados.
numeros = [1, 2, 3, 4, 5]
cuadrados = list(map(lambda x: x**2, numeros))
print(cuadrados)
# Salida: [1, 4, 9, 16, 25] Uso de filter()La función filter() filtra elementos de un iterable en función de una función que devuelve True o False. Devuelve un nuevo iterable con los elementos que cumplen la condición.
numeros = [1, 2, 3, 4, 5, 6]
pares = list(filter(lambda x: x % 2 == 0, numeros))
print(pares)
# Salida: [2, 4, 6] Uso de reduce()La función reduce() aplica una función de manera acumulativa a los elementos de un iterable, reduciendo el iterable a un solo valor. Esta función se encuentra en el módulo functools, por lo que es necesario importarla primero.
from functools import reduce
numeros = [1, 2, 3, 4]
producto = reduce(lambda x, y: x * y, numeros)
print(producto)
# Salida: 24 Las funciones lambda y las funciones de orden superior son herramientas útiles en Python para simplificar el código y realizar operaciones en colecciones de datos de manera eficiente. Su uso adecuado puede llevar a un código más limpio y expresivo.