En este tutorial, aprenderá todo sobre las funciones lambda en Python, desde la sintaxis para definir funciones lambda hasta diferentes casos de uso con ejemplos de código.
En Python, las lambdas son anónimo funciones que tienen una sintaxis concisa y se pueden usar con otras funciones integradas útiles. Al final de este tutorial, habrá aprendido a definir funciones lambda y cuándo debería considerar usarlas en comparación con las funciones regulares de Python.
¡Empecemos!
Función Python Lambda: sintaxis y ejemplos
Esta es la sintaxis general para definir una función lambda en Python:
lambda parameter(s):return value
En la sintaxis general anterior:
- lambda es la palabra clave que debe usar para definir una función lambda, seguida de una o más configuraciones que debe tomar la función.
- Hay dos puntos que separan los parámetros y los 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ás esto mejor cuando codifiquemos ejemplos.
Ejemplos de funciones Python Lambda
La mejor manera de comprender las funciones lambda es comenzar reescribiendo las funciones estándar de Python como funciones lambda.
👩🏽💻 Puede codificar en un REPL de Python o en el editor de Python en línea de Geekflare.
#1. Considere la siguiente función square()
que toma un número, num
como argumento y devuelve el cuadrado del número.
def square(num):
return num*num
Puede llamar a la función con argumentos y verificar que funciona correctamente.
>>> square(9)
81
>>> square(12)
144
Puede asignar esta expresión lambda a un nombre de variable, por ejemplo, square1
para hacer la definición de la función más concisa: square1 = lambda num: num*num
entonces llama al square1
función 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 square()
el parámetro es num
y el valor de retorno es num*num
. Una vez que los hayamos identificado, podemos insertarlos en la expresión lambda y llamarla con un argumento, como se muestra:
>>> (lambda num: num*num)(2)
4
es el concepto de Expresión de función invocada inmediatamentedonde llamamos a una función justo después de definirla.
#2. A continuación, reescribamos otra función simple add()
que toma en cifras, num1
y num2
y devuelve su suma, num1 + num2
.
def add(num1,num2):
return num1 + num2
llamémoslo add()
función 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 devuelto es num1 + num2
.
>>> (lambda num1, num2: num1 + num2)(3,7)
10
Las funciones de Python también pueden tomar valores predeterminados para los parámetros. Cambiemos la definición de add()
función y establecer el valor predeterminado de la num2
parámetro a 10.
def add(num1, num2=10):
return num1 + num2
En las siguientes llamadas a funciones:
- En la primera llamada a la función, el valor de
num1
es 1 y el valor denum2
es 3. Cuando pasas el valor denum2
en la llamada de función, se utiliza este valor; la función devuelve 4.
- Sin embargo, si pasa solo un argumento (
num1
es 7), el valor predeterminado de 10 se utiliza paranum2
; la función devuelve 17.
>>> add(1,3)
4
>>> add(7)
17
Al escribir funciones que toman valores predeterminados para ciertos parámetros como expresiones lambda, puede especificar el valor predeterminado al configurar los parámetros.
>>> (lambda num1, num2 = 10: num1 + num2)(1)
11
¿Cuándo debería usar las funciones de Lambda en Python?
Ahora que ha aprendido los conceptos básicos de las funciones lambda en Python, estos son algunos casos de uso:
- Cuando tiene una función cuya expresión de retorno es una sola línea de código y no necesita hacer referencia a la función en otro lugar del mismo módulo, puede usar funciones lambda. También hemos codificado algunos ejemplos para entender esto.
- Puede usar funciones lambda cuando use funciones integradas, como map(), filter() y reduce().
- Las funciones Lambda pueden ser útiles para clasificar estructuras de datos de Python, como listas y diccionarios.
Cómo usar Python Lambda con funciones integradas
1. Usar Lambda con map()
los map()
función toma un iterable y una función y aplica la función a cada elemento en el iterable, como se muestra:
Vamos a crear un nums
lista y uso map()
para crear una nueva lista que contenga el cuadrado de cada número en el nums
listado. Tenga en cuenta el uso de la función lambda para definir la operación de elevación al cuadrado.
>>> nums = [4,5,6,9]
>>> list(map(lambda num:num*num,nums))
[16, 25, 36, 81]
Como el map()
función devuelve un objeto de mapa, debemos convertirlo en una lista.
▶️ Consulte este tutorial sobre la función map() en Python.
2. Usar Lambda con filtro()
definamos nums
una lista de números:
>>> nums = [4,5,6,9]
Suponga que desea filtrar esta lista y conservar solo los números impares.
Puedes usar la función integrada de Python filter()
función.
los filter()
la función toma en condición Y un iterable: filter(condition, iterable)
. El resultado contiene solo aquellos elementos del iterable original que satisfacen la condición. Puede convertir el objeto devuelto en un iterable de Python, como una lista.
Para filtrar todos los números pares, conservaremos solo los números impares. Entonces 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
esTrue
cada vez quenum
es extraño, ynum%2!=0
esFalse
cada vez quenum
es igual.
>>> nums = [4,5,6,9]
>>> list(filter(lambda num:num%2!=0,nums))
[5, 9]
3. Usar Lambda con reduce()
los reduce()
función toma un iterable y una función. Reduce el iterable aplicando la función iterativamente sobre los elementos del iterable.
Usar el reduce()
función, deberá importarla desde la función integrada de Python functools
módulo:
>>> from functools import reduce
usémoslo reduce()
funcion para calcular la suma de todos los numeros nums
listado. Definimos una expresión lambda: lambda num1,num2:num1+num2
como una función de suma reductora.
La operación de reducción será 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 en 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 de Python Lambda para personalizar la clasificación
Además de usar funciones lambda con funciones integradas de Python, como map()
, filter()
y reduce()
también puede usarlos para personalizar las funciones integradas y los métodos utilizados para ordenar.
1. Ordenar listas de Python
Cuando trabaje con listas de Python, a menudo necesitará ordenarlas según ciertos criterios de clasificación. Para ordenar las listas de Python en su lugar, puede usar la función incorporada sort()
método sobre ellos. Si necesita una copia ordenada de la lista, puede utilizar el sorted()
función.
La sintaxis para usar Python
sorted()
la funcion essorted(iterable, key=...,reverse= True | False)
.– Los
key
El parámetro se utiliza para personalizar la ordenación.
– Losreverse
El parámetro se puede establecer enTrue
DóndeFalse
; El valor predeterminado esFalse
.
Al clasificar listas de números y cadenas, la clasificación predeterminada es ascendente y alfabética, respectivamente. Sin embargo, a veces es posible que desee definir un criterio personalizado para la clasificación.
Considere la siguiente lista fruits
. Suponga que desea obtener una copia ordenada de la lista. Debe ordenar las cadenas por el número de ocurrencias de ‘p’ que contienen, en orden descendente.
>>> fruits = ['apple','pineapple','grapes','mango']
Es hora de usar la opción. key
ajuste. Una cadena es iterable en Python y para obtener la cantidad de ocurrencias de un carácter en ella, puede usar la función incorporada .count()
método. Por lo tanto, hemos fijado el key
a lambda x:x.count('p')
para que la clasificación se base en el número de veces que aparece ‘p’ en la cadena.
>>> fruits = ['apple','pineapple','grapes','mango']
>>> sorted(fruits,key=lambda x:x.count('p'),reverse=True)
['pineapple', 'apple', 'grapes', 'mango']
En este ejemplo:
- los
key
sort es el número de ocurrencias del carácter ‘p’, y se define como una expresión lambda. - Como definimos el
reverse
parámetro aTrue
la clasificación se realiza en orden descendente del número de ocurrencias de ‘p’.
En el fruits
‘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 clasificación estable
Tomemos otro ejemplo. Para el mismo criterio de clasificación, redefinimos el fruits
listado. Aquí, ‘p’ aparece en las cadenas ‘manzana’ y ‘uvas’ dos y una vez respectivamente. Y esto nunca sucede en las cuerdas ‘mango’ y ‘melon’.
>>> fruits = ['mango','apple','melon','grapes']
>>> sorted(fruits,key=lambda x:x.count('p'),reverse=True)
['apple', 'grapes', 'mango', 'melon']
En la lista de salida, ‘mango’ viene antes de ‘melon’ aunque ninguno de los dos tiene el carácter ‘p’. Pero ¿por qué es este el caso? los sorted()
la función realiza una ordenación estable; entonces cuando el número de ‘p’ es igual para dos cadenas, el orden de los elementos en el original fruits
se mantiene la lista.
Como ejercicio rápido, intercambie las posiciones de «mango» y «melon» en el
fruits
lista, ordenar la lista por el mismo criterio y observar la salida.
▶️ Obtenga más información sobre cómo ordenar las listas de Python.
2. Ordenar un diccionario de Python
También puede usar lambdas al ordenar los diccionarios de Python. Considere el siguiente diccionario price_dict
que contiene los artículos y sus precios.
>>> price_dict = {
... 'Milk':10,
... 'Honey':15,
... 'Bread':7,
... 'Candy':3
... }
Para obtener los pares clave-valor de un diccionario como una lista de tuplas, puede usar el método de diccionario incorporado .items()
:
>>> price_dict_items = price_dict.items()
dict_items([('Milk', 10), ('Honey', 15), ('Bread', 7), ('Candy', 3)])
En Python, todos los iterables: listas, tuplas, cadenas, etc. siguen una indexación cero. Así, el primer elemento está en el índice 0, el segundo en el índice 1, y así sucesivamente.
Nos gustaría ordenar por valor, que es el precio de cada entrada del diccionario. En cada tupla de la price_dict_items
lista, el artículo en el índice 1 es el precio. Por lo tanto, hemos fijado el key
a lambda x:x[1]
porque utilizará el artículo en el índice 1, el precio, para ordenar el diccionario.
>>> dict(sorted(price_dict_items,key=lambda x:x[1]))
{'Candy': 3, 'Bread': 7, 'Milk': 10, 'Honey': 15}
En la salida, los elementos del diccionario se han ordenado en orden ascendente de precio: desde «Candy», con un precio de 3 unidades, hasta «Honey», con un precio de 15 unidades.
▶️ Para obtener más información, consulte esta guía detallada sobre cómo ordenar un diccionario de Python por clave y valor.
Resumen
¡Y ahí lo tienes! Aprendió cómo definir funciones lambda y usarlas de manera efectiva con otras funciones integradas de Python. He aquí un resumen de las principales conclusiones:
- En Python, las lambdas son funciones anónimas que puede tomar varios argumentos y devolver un valor; la expresión que se evaluará para generar este valor de retorno debe ser una línea de código. Se pueden usar para hacer que las definiciones de funciones pequeñas sean más concisas.
- Para definir la función Lambda, puede usar la sintaxis: Parámetro(s) lambda: valor de retorno.
- Algunos de los casos de uso destacados incluyen usarlos con
map()
,filter()
yreduce()
funciones y como parámetro clave para personalizar la clasificación de iterables de Python.
A continuación, aprenda cómo realizar la división del suelo en Python.
Si quiere puede hacernos una donación por el trabajo que hacemos, lo apreciaremos mucho.
Direcciones de Billetera:
- BTC: 14xsuQRtT3Abek4zgDWZxJXs9VRdwxyPUS
- USDT: TQmV9FyrcpeaZMro3M1yeEHnNjv7xKZDNe
- BNB: 0x2fdb9034507b6d505d351a6f59d877040d0edb0f
- DOGE: D5SZesmFQGYVkE5trYYLF8hNPBgXgYcmrx
También puede seguirnos en nuestras Redes sociales para mantenerse al tanto de los últimos post de la web:
- Telegram
Disclaimer: En Cryptoshitcompra.com no nos hacemos responsables de ninguna inversión de ningún visitante, nosotros simplemente damos información sobre Tokens, juegos NFT y criptomonedas, no recomendamos inversiones