Lambdas y Funciones de Orden Superior en Python

  Funciones lambda

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 Lambda

Una 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.

1. Ejemplo de Función Lambda

python
suma = lambda x, y: x + y
resultado = suma(3, 5)
print(resultado)  
# Salida: 8

En este ejemplo, la función suma toma dos argumentos y devuelve su suma.

2. Ejemplo de Función Lambda

Supongamos que queremos ordenar una lista de tuplas que contienen nombres y edades, y queremos ordenarla por edad:

python
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 ejemplo, la función lambda toma una tupla persona y devuelve el segundo elemento (edad) para realizar la comparación durante la ordenación.

Las funciones de orden superior

Son 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.

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

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

python
from functools import reduce

numeros = [1, 2, 3, 4]
producto = reduce(lambda x, y: x * y, numeros)
print(producto)  
# Salida: 24
  Resumen

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.