Funciones Python Lambda

Las funciones Python Lambda son funciones anónimas, lo que significa que la función no tiene nombre. Como ya sabemos, la palabra clave def se usa para definir una función normal en Python. De manera similar, la palabra clave lambda se usa para definir una función anónima en Python. 

Función Python Lambda 

Sintaxis:

lambda arguments: expression
  • Esta función puede tener cualquier número de argumentos, pero solo una expresión, que se evalúa y devuelve.
  • Uno es libre de usar funciones lambda dondequiera que se requieran objetos de función.
  • Debe tener en cuenta que las funciones lambda están restringidas sintácticamente a una sola expresión.
  • Tiene varios usos en campos particulares de la programación además de otros tipos de expresiones en funciones.

Ejemplo: Ejemplo de la función Lambda

Python3

# Python program to demonstrate
# lambda functions
 
 
string ='GeeksforGeeks'
 
# lambda returns a function object
print(lambda string : string)
Producción

<function <lambda> at 0x7f65e6bbce18>

En este ejemplo anterior, la función de impresión no llama a la lambda, sino que simplemente devuelve el objeto de la función y la ubicación de la memoria donde está almacenado.

Entonces, para hacer que la impresión imprima la string primero, debemos llamar a la lambda para que la string pase la impresión.

Ejemplo:

Python3

# Python program to demonstrate
# lambda functions
 
 
x ="GeeksforGeeks"
 
# lambda gets pass to print
(lambda x : print(x))(x)
Producción

GeeksforGeeks

La diferencia entre las funciones Lambda y la función definida por definición es la siguiente: 

Veamos este ejemplo e intentemos comprender la diferencia entre una función definida por definición normal y una función lambda. Este es un programa que devuelve el cubo de un valor dado:  

Python

# Python code to illustrate cube of a number
# showing difference between def() and lambda().
def cube(y):
    return y*y*y
 
lambda_cube = lambda y: y*y*y
 
# using the normally
# defined function
print(cube(5))
 
# using the lambda function
print(lambda_cube(5))
Producción

125
125

Como podemos ver en el ejemplo anterior, tanto la función cube() como la función lambda_cube() se comportan igual y según lo previsto. Analicemos un poco más el ejemplo anterior:

  • Sin usar Lambda: Aquí, ambos devuelven el cubo de un número dado. Pero, al usar def, necesitábamos definir una función con un cubo de nombre y necesitábamos pasarle un valor. Después de la ejecución, también necesitábamos devolver el resultado desde donde se llamó a la función usando la palabra clave return .
  • Uso de Lambda: la definición de Lambda no incluye una declaración de «retorno», siempre contiene una expresión que se devuelve. También podemos poner una definición lambda en cualquier lugar donde se espera una función, y no tenemos que asignarla a ninguna variable. Esta es la simplicidad de las funciones lambda.

Veamos algunos ejemplos más comunes de funciones lambda.

Ejemplo 1: Función Python Lambda con comprensión de lista

En este ejemplo, usaremos la función lambda con comprensión de lista y lambda con bucle for. Intentaremos imprimir la tabla de 10.

Python3

tables = [lambda x=x: x*10 for x in range(1, 11)]
 
for table in tables:
    print(table())
Producción

10
20
30
40
50
60
70
80
90
100

Ejemplo 2: Función Python Lambda con if-else

Python3

# Example of lambda function using if-else
Max = lambda a, b : a if(a > b) else b
 
print(Max(1, 2))
Producción

2

Ejemplo 3: Python Lambda con declaraciones múltiples

Las funciones lambda no permiten declaraciones múltiples, sin embargo, podemos crear dos funciones lambda y luego llamar a la otra función lambda como un parámetro para la primera función. Intentemos encontrar el segundo elemento máximo usando lambda.

Python3

List = [[2,3,4],[1, 4, 16, 64],[3, 6, 9, 12]]
 
# Sort each sublist
sortList = lambda x: (sorted(i) for i in x)
 
# Get the second largest element
secondLargest = lambda x, f : [y[len(y)-2] for y in f(x)]
res = secondLargest(List, sortList)
 
print(res)
Producción

[3, 16, 9]

En el ejemplo anterior, hemos creado una función lambda que ordena cada sublista de la lista dada. Luego, esta lista se pasa como parámetro a la segunda función lambda, que devuelve el elemento n-2 de la lista ordenada, donde n es la longitud de la sublista.

Las funciones Lambda se pueden usar junto con funciones integradas como filter() , map() y reduce() .

Uso de la función lambda() con filter()

La función filter() en Python toma una función y una lista como argumentos. Esto ofrece una forma elegante de filtrar todos los elementos de una secuencia «secuencia», para los cuales la función devuelve True. Aquí hay un pequeño programa que devuelve los números impares de una lista de entrada: 

Ejemplo 1:

Python

# Python code to illustrate
# filter() with lambda()
li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61]
 
final_list = list(filter(lambda x: (x%2 != 0) , li))
print(final_list)

Producción:

[5, 7, 97, 77, 23, 73, 61]

Ejemplo 2:

Python3

# Python 3 code to people above 18 yrs
ages = [13, 90, 17, 59, 21, 60, 5]
 
adults = list(filter(lambda age: age>18, ages))
 
print(adults)

Producción:

[90, 59, 21, 60]

Uso de la función lambda() con map()

La función map() en Python toma una función y una lista como argumento. Se llama a la función con una función lambda y se devuelve una lista y una nueva lista que contiene todos los elementos modificados lambda devueltos por esa función para cada elemento. Ejemplo: 

Ejemplo 1:

Python

# Python code to illustrate
# map() with lambda()
# to get double of a list.
li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61]
 
final_list = list(map(lambda x: x*2, li))
print(final_list)
Producción

[10, 14, 44, 194, 108, 124, 154, 46, 146, 122]

Ejemplo 2:

Python3

# Python program to demonstrate
# use of lambda() function
# with map() function
animals = ['dog', 'cat', 'parrot', 'rabbit']
 
# here we intend to change all animal names
# to upper case and return the same
uppered_animals = list(map(lambda animal: str.upper(animal), animals))
 
print(uppered_animals)
Producción

['DOG', 'CAT', 'PARROT', 'RABBIT']

Uso de la función lambda() con reduce()

La función reduce() en Python toma una función y una lista como argumento. La función se llama con una función lambda y se devuelve un iterable y un nuevo resultado reducido. Esto realiza una operación repetitiva sobre los pares del iterable. La función reduce() pertenece al   módulo functools

Ejemplo 1:

Python

# Python code to illustrate
# reduce() with lambda()
# to get sum of a list
 
from functools import reduce
li = [5, 8, 10, 20, 50, 100]
sum = reduce((lambda x, y: x + y), li)
print (sum)

Producción:

193

Aquí los resultados de los dos elementos anteriores se agregan al siguiente elemento y esto continúa hasta el final de la lista como (((((5+8)+10)+20)+50)+100).

Ejemplo 2:

Python3

# python code to demonstrate working of reduce()
# with a lambda function
 
# importing functools for reduce()
import functools
 
# initializing list
lis = [ 1 , 3, 5, 6, 2, ]
 
# using reduce to compute maximum element from list
print ("The maximum element of the list is : ",end="")
print (functools.reduce(lambda a,b : a if a > b else b,lis))
Producción

The maximum element of the list is : 6

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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