En este tutorial, aprenderá todo sobre las funciones lambda en Python - desde la sintaxis para definir funciones lambda hasta los diferentes casos de uso con ejemplos de código.
En Python, las lambdas son funciones anónimas que tienen una sintaxis concisa y pueden utilizarse con otras funciones incorporadas de gran ayuda. Al final de este tutorial, habrá aprendido cómo definir funciones lambda y cuándo debe considerar su uso en lugar de las funciones regulares de Python.
Comencemos
Función Lambda de Python: Sintaxis y Ejemplos
He aquí la sintaxis general para definir una función lambda en Python:
parámetro(s) lambda:valor de retorno
En la sintaxis general anterior
- lambda es la palabra clave que debe utilizar para definir una función lambda, seguida de uno o varios parámetros que debe tomar la función.
- Hay dos puntos separando los parámetros y el valor de retorno.
💡 Al definir una función lambda, debe asegurarse de que el valor de retorno se calcule evaluando una expresión que abarque una sola línea de código. Entenderá mejor esto cuando codifiquemos ejemplos.
Ejemplos de funciones lambda en Python
La mejor manera de entender las funciones lambda es empezar reescribiendo las funciones regulares de Python como funciones lambda.
👩🏽💻 Puede codificar a lo largo en un REPL de Python o en el editor de Python en línea de Geekflare.
#1. Considere la siguiente función cuadrada ()
que tome un número, num
, como argumento y devuelve el cuadrado del número.
def cuadrado(num):
return num*num
Puede llamar a la función con argumentos y comprobar que funciona correctamente.
>>> cuadrado(9)
81
>>> cuadrado(12)
144
Puede asignar esta expresión lambda a un nombre de variable, digamos, cuadrado1
para que la definición de la función sea más concisa: cuadrado1 = lambda num: num*num
y luego llamar a la función cuadrado1
con cualquier número como argumento. Sin embargo, sabemos que las lambdas son funciones anónimas, por lo que debe evitar asignarlas a una variable.
Para la función cuadrar (
), el parámetro es num
y el valor de retorno es num*num
. Una vez identificados, podemos introducirlos en la expresión lambda y llamarla con un argumento, como se muestra:
>>> (lambda num: num*num)(2)
4
Este es el concepto de expresión de función inmediatamente invocada, en el que llamamos a una función justo después de definirla.
#2. A continuación, vamos a reescribir otra función sencilla add()
que toma dos números, num1
y num2
, y devuelve su suma, num1 num2
.
def sumar(num1,num2):
return num1 num2
Llamemos a la función add
() con dos números como argumentos:
>>> add(4,3)
7
>>> add(12,5)
17
>>> add(12,6)
18
En este caso, num1
y num2
son los dos parámetros y el valor de retorno es num1 num2
.
>>> (lambda num1, num2: num1 num2)(3,7)
10
Las funciones de Python también pueden tomar valores por defecto para los parámetros. Modifiquemos la definición de la función add()
y establezcamos el valor por defecto del parámetro num2
en 10.
def add(num1, num2=10):
return num1 num2
En las siguientes llamadas a la función:
- En la primera llamada a la función, el valor de
num1
es 1 y el valor denum2
es 3. Cuando se pasa el valor denum2
en la llamada a la función, se utiliza ese valor; la función devuelve 4.
- Sin embargo, si sólo pasa un argumento
(
num1 es 7), se utiliza el valor por defecto de 10 paranum2
; la función devuelve 17.
>>> add(1,3)
4
>>> add(7)
17
Al escribir funciones que toman valores por defecto para determinados parámetros como expresiones lambda, puede especificar el valor por defecto al definir los parámetros.
>>> (lambda num1, num2 = 10: num1 num2)(1)
11
¿Cuándo debe utilizar funciones lambda en Python?
Ahora que ha aprendido los conceptos básicos de las funciones lambda en Python, aquí tiene algunos casos de uso:
- Cuando tenga una función cuya expresión de retorno sea una única línea de código y no necesite hacer referencia a la función en otra parte del mismo módulo, puede utilizar funciones lambda. También hemos codificado algunos ejemplos para entender esto.
- Puede utilizar funciones lambda cuando utilice funciones incorporadas, como map(), filter() y reduce().
- Las funciones lambda pueden ser útiles para ordenar estructuras de datos de Python como listas y diccionarios.
Cómo utilizar lambda de Python con funciones incorporadas
#1. Uso de Lambda con map()
La función map
() toma un iterable y una función y aplica la función a cada elemento del iterable, como se muestra:

Creemos una lista nums
y utilizaremos la función map( )
para crear una nueva lista que contenga el cuadrado de cada número de la lista nums
. Observe el uso de la función lambda para definir la operación de cuadrado.
>>> nums = [4,5,6,9]
>>> list(map(lambda num:num*num,nums))
[16, 25, 36, 81]
Como la función map(
) devuelve un objeto mapa, debemos convertirlo en una lista.
▶️ Consulte este tutorial sobre la función map() en Python.
#2. Uso de Lambda con filter()
Definamos nums
, una lista de números:
>>> nums = [4,5,6,9]
Supongamos que desea filtrar esta lista y retener sólo los números impares.
Puede utilizar la función filtro (
) incorporada en Python.
La función filter
() toma una condición y un iterable: filter(condition, iterable)
. El resultado contiene sólo los elementos del iterable original que satisfacen la condición. Puede convertir el objeto devuelto en un iterable de Python como list.

Para filtrar todos los números pares, retendremos sólo los impares. Así que la expresión lambda debería ser lambda num: num%2
!=0. La cantidad num%2
es el resto cuando num
se divide por 2.
- ¡num%2!
=0
esVerdadero
siempre quenum
mar impar, y - ¡num%2!
=0
esFalso
siempre quenum
mar par.
>>> nums = [4,5,6,9]
>>> list(filter(lambda num:num%2!=0,nums))
[5, 9]
#3. Uso de lambda con reduce()
La función reduce
() toma un iterable y una función. Reduce el iterable aplicando la función iterativamente sobre los elementos del iterable.

Para utilizar la función reduce( )
, tendrá que importarla desde el módulo incorporado functools
de Python:
>>> from functools import reduce
Utilicemos la función reduce() para calcular la suma de todos los números de la lista nums. Definimos una expresión lambda: lambda num1,num2:num1 num2
, como la función reducir suma.
La operación de reducción se producirá así: f(f(f(4,5),6),9) = f(f(9,6),9) = f(15,9) = 24. Aquí, f es la operación de suma sobre dos elementos de la lista, definida por la función lambda.
>>> from functools import reduce
>>> nums = [4,5,6,9]
>>> reduce(lambda num1,num2:num1 num2,nums)
24
Funciones lambda de Python para personalizar la ordenación
Además de utilizar funciones lambda con funciones incorporadas de Python, como map()
, filter()
y reducir ()
, también puede utilizarlas para personalizar funciones incorporadas y métodos utilizados para ordenar.

#1. Ordenación de listas de Python
Cuando trabaje con listas de Python, a menudo tendrá que ordenarlas basándose en ciertos criterios de ordenación. Para ordenar listas Python en su lugar, puede utilizar el método incorporado sort()
sobre ellas. Si necesita una copia ordenada de la lista, puede utilizar la función sorted()
.
La sintaxis para utilizar la función
sorted
() de Python essorted(iterable, key=...,reverse= True | False)
.
- El parámetroclave
se utiliza para personalizar la ordenación.
- El parámetroreverse
puede fijarse enTrue
oFalse
; el valor por defecto esFalse
.
Al ordenar listas de números y cadenas, la ordenación por defecto es en orden ascendente y alfabético, respectivamente. Sin embargo, es posible que a veces desee definir algún criterio personalizado para la ordenación.
Considere la siguiente lista de frutas
. Suponga que desea obtener una copia ordenada de la lista. Debería ordenar las cadenas según el número de apariciones de 'p' en ellas, en orden decreciente.
>>> frutas = ['manzana','piña','uvas','mango']
Es hora de utilizar el parámetro clave
opcional. Una cadena es un iterable en Python y para obtener el número de ocurrencias de un carácter en ella, puede utilizar el método incorporado .count()
. Así que establecemos la clave
como lambda x:x.count('p')
para que la ordenación se base en el número de veces que 'p' aparece en la cadena.
>>> frutas = ['manzana','piña','uva','mango']
>>> ordenada(frutas,clave=lambda x:x.count('p'),inverso=True)
['piña', 'manzana', 'uva', 'mango']
En este ejemplo:
- La
clave
para ordenar es el número de apariciones del carácter 'p', y se define como una expresión lambda. - Como hemos establecido el parámetro
inverso
enTrue
, la ordenación se produce en el orden decreciente del número de apariciones de 'p'.
En la lista de frutas
, 'piña' contiene 3 apariciones de 'p', y las cadenas 'manzana', 'uvas' y 'mango' contienen 2, 1 y 0 apariciones de 'p', respectivamente.
Comprender la ordenación estable
Consideremos otro ejemplo. Para el mismo criterio de ordenación, hemos redefinido la lista de frutas
. Aquí, 'p' aparece en las cadenas 'manzana' y 'uvas' dos veces y una vez, respectivamente. Y nunca aparece en las cadenas 'mango' y 'melón'.
>>> fruits = ['mango','manzana','melón','uvas']
>>> sorted(fruits,key=lambda x:x.count('p'),reverse=True)
['manzana', 'uvas', 'mango', 'melón']
En la lista de salida, 'mango' aparece antes que 'melón' a pesar de que ambos no tienen el carácter 'p'. Pero, ¿por qué ocurre esto? La función sorted(
) realiza una ordenación estable; así que cuando el recuento de 'p' es igual para dos cadenas, se conserva la ordenación de los elementos en la lista de frutas
original.
Como ejercicio rápido, intercambie las posiciones de 'mango' y 'melón' en la lista de
frutas
, ordene la lista basándose en el mismo criterio y observe la salida.
▶️ Más información sobre la ordenación de listas en Python.
#2. Ordenar un diccionario Python
También puede utilizar lambdas para ordenar diccionarios Python. Considere el siguiente diccionario precio_dict
que contiene artículos y sus precios.
>>> precio_dict = {
... 'Leche':10,
... 'Miel':15,
... 'Pan':7,
... 'Caramelo':3
... }
Para obtener los pares clave-valor de un diccionario como una lista de tuplas, puede utilizar el método incorporado en el diccionario .items()
:
>>> precio_dict_items = precio_dict.items()
dict_items([('Leche', 10), ('Miel', 15), ('Pan', 7), ('Caramelo', 3)])
En Python, todos los iterables: listas, tuplas, cadenas y más, siguen la indexación cero. Así, el primer elemento está en el índice 0, el segundo en el 1, y así sucesivamente.
Nos gustaría ordenar por el valor, que es el precio de cada artículo del diccionario. En cada tupla de la lista price_dict_items
, el elemento en el índice 1 es el precio. Así que establecemos la clave
como lambda x:x<x>[1]</x>
, ya que utilizará el elemento en el índice 1, el precio, para ordenar el diccionario.
>>> dict(sorted(precio_dict_items,key=lambda x:x<x>[1]</x>))
{'Caramelo': 3, 'Pan': 7, 'Leche': 10, 'Miel': 15}
En la salida, los artículos del diccionario se han ordenado en orden ascendente de precios: empezando por 'Caramelo', con un precio de 3 unidades, hasta 'Miel', con un precio de 15 unidades.
▶️ Para saber más, consulte esta guía detallada sobre la ordenación de un diccionario Python por clave y valor.
Resumiendo
¡Y ahí lo tiene! Ha aprendido a definir funciones lambda y a utilizarlas eficazmente con otras funciones incorporadas de Python. He aquí un resumen de los puntos clave:
- En Python, las lambdas son funciones anónimas que pueden tomar múltiples argumentos y devolver un valor; la expresión a evaluar para generar este valor de retorno debe ser una línea de código. Pueden utilizarse para hacer más concisas las definiciones de funciones pequeñas.
- Para definir la función lambda puede utilizar la sintaxis: parámetro(s) lambda: valor de retorno.
- Algunos de los casos de uso importantes incluyen su utilización con las funciones
map()
,filter()
yreduce()
y como parámetro clave para personalizar la ordenación de los iterables de Python.
A continuación, aprenda a realizar la división por el suelo en Python. Además, aprenda más sobre la función dormir de Python.