Usando Lambda con Funciones Integradas
Las funciones lambda se vuelven particularmente poderosas cuando se combinan con las funciones integradas de Python como map(), filter() y sorted(). Estas combinaciones te permiten escribir código eficiente para la transformación y manipulación de datos.
La Función map() con Lambda
La función map() aplica una función dada a cada elemento de un iterable (como una lista) y devuelve un objeto map con los resultados.
-
Crea un nuevo archivo llamado lambda_builtin.py en el directorio /home/labex/project.
-
Añade el siguiente código para demostrar el uso de map() con lambda:
## Usando map() con una función lambda para elevar al cuadrado cada número en una lista
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x**2, numbers))
print("Números originales:", numbers)
print("Números al cuadrado:", squared_numbers)
- Ejecuta tu código:
python3 ~/project/lambda_builtin.py
Deberías ver:
Números originales: [1, 2, 3, 4, 5]
Números al cuadrado: [1, 4, 9, 16, 25]
La Función filter() con Lambda
La función filter() crea un nuevo iterable con elementos que satisfacen una condición (la función devuelve True).
- Añade el siguiente código a tu archivo
lambda_builtin.py:
## Usando filter() con una función lambda para encontrar números pares
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print("Todos los números:", numbers)
print("Números pares:", even_numbers)
## Usando filter() para encontrar nombres que comienzan con 'J'
names = ["Alice", "Bob", "John", "Jane", "Michael", "Jessica"]
j_names = list(filter(lambda name: name.startswith('J'), names))
print("Todos los nombres:", names)
print("Nombres que comienzan con J:", j_names)
- Ejecuta tu código actualizado:
python3 ~/project/lambda_builtin.py
Deberías ver una salida adicional:
Todos los números: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Números pares: [2, 4, 6, 8, 10]
Todos los nombres: ['Alice', 'Bob', 'John', 'Jane', 'Michael', 'Jessica']
Nombres que comienzan con J: ['John', 'Jane', 'Jessica']
La Función sorted() con Lambda
La función sorted() te permite ordenar iterables usando una función clave (key) personalizada, que es donde las funciones lambda son muy útiles.
- Añade el siguiente código a tu archivo
lambda_builtin.py:
## Usando sorted() con lambda para ordenar por el segundo elemento de las tuplas
pairs = [(1, 5), (3, 2), (5, 7), (2, 9), (4, 1)]
sorted_by_second = sorted(pairs, key=lambda pair: pair[1])
print("Pares originales:", pairs)
print("Ordenado por el segundo elemento:", sorted_by_second)
## Usando sorted() con lambda para ordenar cadenas por longitud
words = ["apple", "banana", "cherry", "date", "elderberry", "fig"]
sorted_by_length = sorted(words, key=lambda word: len(word))
print("Palabras originales:", words)
print("Ordenado por longitud:", sorted_by_length)
- Ejecuta tu código actualizado:
python3 ~/project/lambda_builtin.py
Deberías ver una salida adicional:
Pares originales: [(1, 5), (3, 2), (5, 7), (2, 9), (4, 1)]
Ordenado por el segundo elemento: [(4, 1), (3, 2), (1, 5), (5, 7), (2, 9)]
Palabras originales: ['apple', 'banana', 'cherry', 'date', 'elderberry', 'fig']
Ordenado por longitud: ['fig', 'date', 'apple', 'cherry', 'banana', 'elderberry']
Combinando Múltiples Funciones Lambda
También puedes encadenar o combinar múltiples operaciones usando funciones lambda:
- Añade el siguiente código a tu archivo
lambda_builtin.py:
## Combinando map y filter con funciones lambda
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
## Primero eleva al cuadrado los números, luego filtra los valores mayores que 20
result = list(filter(lambda x: x > 20, map(lambda x: x**2, numbers)))
print("Números originales:", numbers)
print("Números al cuadrado > 20:", result)
- Ejecuta tu código actualizado:
python3 ~/project/lambda_builtin.py
Deberías ver una salida adicional:
Números originales: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Números al cuadrado > 20: [25, 36, 49, 64, 81, 100]
Las funciones lambda con funciones integradas como map(), filter() y sorted() proporcionan una forma poderosa de procesar datos con un código mínimo. En el siguiente paso, exploraremos aplicaciones más prácticas de las funciones lambda.