Funciones lambda con Python

Estas son las tres principales características de las funciones lambda con Python:

  • Son funciones anónimas
  • Solo pueden contener una expresión
  • No necesitan la palabra return para retornar un resultado.
lambda argumentos : expresión

# Se ejecuta la expresión y se devuelve un resultado

Función lambda en Python

Las funciones lambda de Python se pueden asignar a variables y después llamar a esa variable.

Veamos antes de nada un ejemplo básico de función lambda:

saludo = lambda: print('Hola')
saludo()

# Hola

Otro ejemplo de función lambda pero enviando una cadena de texto como argumento.

saludo = lambda nombre: print(f'Hola {nombre}')
saludo('Luis')

# Hola Luis

Ahora realizaremos una función para hacer una determinada operación. Recuerda que las funciones lambda admiten todos los parámetros que necesites.

calculo = lambda a, b, c, d: print(((a + b) * c) / d)
calculo(1, 2, 3, 4)

# 2.25

El envío de argumentos se puede realizar de la misma forma que con el resto de funciones de Python.

Podemos asignar valores por defecto a los parámetros; asignar un número indeterminado de parámetros, e incluso definir nuestra función lambda con parámetros de clave: valor.

Veamos un ejemplo con cada tipo:

Lambda con valores por defecto

Como vemos en el ejemplo, podemos llamar a la función enviando un argumento o los dos. En caso de que solo enviemos uno, tomará el valor por defecto que hayamos asignado para el segundo.

suma = lambda a, b=5: a + b

suma(3)
# 8

suma(10, 10)
# 20

Lambda con número indeterminado de argumentos

En caso de que no conociéramos la cantidad de números que van a ser enviados para sumar, tendríamos que hacer uso del * para nuestra función lambda.

suma = lambda *numeros: sum(numeros)

suma(3, 5, 4, 5, 6)
# 23

Lambda + comprehensions

Para rizar un poco más el rizo, podemos aplicar Comprehensions sobre las funciones lambda. Estaríamos recorriendo una lista de elementos y realizando alguna operación sobre estos elementos.

Para este ejemplo voy a recorrer un string y agregaré un ‘▓’ por cada carácter de la cadena de texto.

agrego_simbolo = lambda palabra: print([letra+'▓' for letra in palabra])
agrego_simbolo('Badajoz')

# ['B▓', 'a▓', 'd▓', 'a▓', 'j▓', 'o▓', 'z▓']

Por ejemplo, podríamos haberlas pasado todas a mayúsculas:

mayusculas = lambda palabra: print([letra.upper() for letra in palabra])
mayusculas('Badajoz')

# ['B', 'A', 'D', 'A', 'J', 'O', 'Z']

Incluso podríamos generar una nueva lista aplicando modificaciones únicamente a los elementos que filtrásemos de la lista.

En este ejemplo detectaremos cuántas letras a minúsculas aparecen y las transformaremos en el símbolo ‘▓’. El resultado será una lista con un número de símbolos ‘▓’ igual al número de letras que se incluyan en la palabra.

a_simbolo = lambda palabra: print(['▓' for letra in palabra if letra == 'a'])

a_simbolo('Badajoz')
# ['▓', '▓']

a_simbolo('abracadabra')
# ['▓', '▓', '▓', '▓', '▓']

Desde el enlace puedes acceder a la documentación oficial de Python en la que se habla sobre las funciones lambda.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *