Funciones Lambda en Python

En Python, usamos la palabra clave lambda para declarar una función anónima, por lo que nos referimos a ellas como "funciones lambda". Una función anónima ref...

¿Qué son las funciones Lambda?

En Python, usamos la palabra clave lambda para declarar una función anónima, por lo que nos referimos a ellas como "funciones lambda". Una función anónima se refiere a una función declarada sin nombre. Aunque sintácticamente se ven diferentes, las funciones lambda se comportan de la misma manera que las funciones regulares que se declaran usando la palabra clave def. Las siguientes son las características de las funciones lambda de Python:

  • Una función lambda puede tomar cualquier cantidad de argumentos, pero solo contienen una sola expresión. Una expresión es un fragmento de código ejecutado por la función lambda, que puede o no devolver ningún valor.
  • Las funciones Lambda se pueden usar para devolver objetos de función.
  • Sintácticamente, las funciones lambda están restringidas a una sola expresión.

En este artículo, discutiremos las funciones lambda de Python en detalle, y mostraremos ejemplos de cómo usarlas.

Creación de una función Lambda

Usamos la siguiente sintaxis para declarar una función lambda:

1
lambda argument(s): expression

Como se indicó anteriormente, podemos tener cualquier número de argumentos, pero solo una expresión. El operador lambda no puede tener declaraciones y devuelve un objeto de función que podemos asignar a cualquier variable.

Por ejemplo:

1
2
3
remainder = lambda num: num % 2

print(remainder(5))

Producción

1
1

En este código, lambda num: num % 2 es la función lambda. num es el argumento, mientras que num % 2 es la expresión que se evalúa y se devuelve el resultado de la expresión. La expresión obtiene el módulo del parámetro de entrada por 2. Proporcionando 5 como parámetro, que se divide por 2, obtenemos un resto de 1.

Debe notar que a la función lambda en el script anterior no se le ha asignado ningún nombre. Simplemente devuelve un objeto de función que se asigna al identificador remanente. Sin embargo, a pesar de ser anónimo, nos fue posible llamarlo de la misma manera que llamamos a una función normal. La declaración:

1
lambda num: num % 2

Es similar a lo siguiente:

1
2
def remainder(num):
    return num % 2

Aquí hay otro ejemplo de una función lambda:

1
2
3
product = lambda x, y : x * y

print(product(2, 3))

Producción

1
6

La función lambda definida anteriormente devuelve el producto de los valores de los dos argumentos.

¿Por qué usar funciones Lambda? {#por qué se usan las funciones de Lambda}

Las funciones lambda se utilizan cuando necesita una función durante un breve período de tiempo. Esto se usa comúnmente cuando desea pasar una función como argumento a funciones de orden superior, es decir, funciones que toman otras funciones como argumentos.

El uso de una función anónima dentro de otra función se explica en el siguiente ejemplo:

1
2
def testfunc(num):
    return lambda x : x * num

En el ejemplo anterior, tenemos una función que toma un argumento, y el argumento debe multiplicarse por un número desconocido. Demostremos cómo usar la función anterior:

1
2
3
4
5
6
def testfunc(num):
    return lambda x : x * num

result1 = testfunc(10)

print(result1(9))

Producción

1
90

En el script anterior, usamos una función lambda para multiplicar el número que pasamos por 10. La misma función se puede usar para multiplicar el número por 1000:

1
2
3
4
5
6
def testfunc(num):
  return lambda x : x * num

result2 = testfunc(1000)

print(result2(9))

Producción

1
9000

Es posible que usemos la función testfunc() para definir las dos funciones lambda anteriores dentro de un solo programa:

1
2
3
4
5
6
7
8
def testfunc(num):
    return lambda x : x * num

result1 = testfunc(10)
result2 = testfunc(1000)

print(result1(9))
print(result2(9))

Producción

1
2
90
9000

Las funciones Lambda se pueden usar junto con las funciones integradas de Python como map(), filter(), etc.

En la siguiente sección, discutiremos cómo usar las funciones lambda con varias funciones integradas de Python.

La función de filtro()

La función filter() de Python toma una función lambda junto con una lista como argumentos. Tiene la siguiente sintaxis:

1
filter(object, iterable)

El objeto aquí debería ser una función lambda que devuelve un valor booleano. Se llamará al ‘objeto’ para cada elemento en el iterable para hacer la evaluación. El resultado es ‘Verdadero’ o ‘Falso’ para cada elemento. Tenga en cuenta que la función solo puede tomar un iterable como entrada.

Una función lambda, junto con la lista a evaluar, se pasa a la función filter(). La función filter() devuelve una lista de aquellos elementos que devuelven True cuando son evaluados por la función lambda. Considere el ejemplo dado a continuación:

1
2
3
4
5
numbers_list = [2, 6, 8, 10, 11, 4, 12, 7, 13, 17, 0, 3, 21]

filtered_list = list(filter(lambda num: (num > 7), numbers_list))

print(filtered_list)

Producción

1
[8, 10, 11, 12, 13, 17, 21]

En el ejemplo anterior, hemos creado una lista llamada numbers_list con una lista de enteros. Hemos creado una función lambda para comprobar los números enteros mayores que 7. Esta función lambda se ha pasado a la función filter() como argumento y los resultados de este filtrado se han guardado en una nueva lista llamada filtered_list .

La función map()

La función map() es otra función integrada que toma un objeto de función y una lista. La sintaxis de la función map es la siguiente:

1
map(object, iterable_1, iterable_2, ...)

El iterable a la función map() puede ser un diccionario, una lista, etc. La función map() básicamente asigna cada elemento en la iterable de entrada al elemento correspondiente en la iterable de salida, de acuerdo con la lógica definida por la función lambda. Considere el siguiente ejemplo:

1
2
3
4
5
numbers_list = [2, 6, 8, 10, 11, 4, 12, 7, 13, 17, 0, 3, 21]

mapped_list = list(map(lambda num: num % 2, numbers_list))

print(mapped_list)

Producción

1
[0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1]

En el script anterior, tenemos una lista numbers_list, que consta de números aleatorios. Luego llamamos a la función map() y le pasamos una función lambda como argumento. La función lambda calcula el resto después de dividir cada número por 2. El resultado del mapeo se almacena en una lista llamada mapped_list. Finalmente, imprimimos el contenido de la lista.

Conclusión

En Python, una función lambda es una función de una sola línea declarada sin nombre, que puede tener cualquier cantidad de argumentos, pero solo puede tener una expresión. Tal función es capaz de comportarse de manera similar a una función regular declarada usando la palabra clave def de Python. A menudo, una función lambda se pasa como argumento a otra función.

En este artículo, explicamos la sintaxis, los casos de uso y los ejemplos de funciones lambda de uso común.

Licensed under CC BY-NC-SA 4.0