Explicación de las funciones de Python Lambda – KDnuggets


Foto del editor

Desde el advenimiento de la programación informática, las funciones han desempeñado un papel clave, ofreciendo ventajas como la reutilización, legibilidad, modularidad, reducción de errores y fácil modificación. La reutilización se considera una de las características más útiles de una función, pero ¿y si te dijera que hay funciones que no son reutilizables pero que siguen siendo útiles? ¡Sigue leyendo para averiguarlo!

Una función lambda no tiene nombre y es una función que se llama inmediatamente. Puede tomar cualquier cantidad de argumentos, pero a diferencia de las funciones regulares, solo devuelve una expresión.

Tiene la siguiente sintaxis:

lambda parameters: expression

La sintaxis de una función lambda, como se muestra arriba, tiene tres elementos:

  • La palabra clave “lambda” es el equivalente de “def” en funciones definidas por el usuario
  • parámetros — similar a los argumentos en las funciones normales
  • una expresión es una operación que se evalúa para llegar a un resultado

A diferencia de las funciones normales, los parámetros en las funciones lambda no están entre paréntesis. Dado que la expresión es una sola línea, debe ser corta, pero aun así realizar las operaciones requeridas en los parámetros. Una función lambda se consume en su definición y, por lo tanto, no se puede reutilizar sin definirla explícitamente de nuevo.

Generalmente, una función lambda se pasa como argumento a una función de nivel superior, como las funciones integradas de Python: filter(), map() o reduce(). Pero, ¿qué es una función de nivel superior?

Una función de nivel superior se define como una función que acepta otras funciones como argumentos (discutido en secciones posteriores).

Ahora que estamos familiarizados con la sintaxis, es hora de comprender las funciones lambda con un ejemplo simple. Supongamos que desea encontrar el cuadrado de un número. Puede definir una función “cuadrática” o escribir una función lambda como se muestra a continuación:

def square(x):
    return x**2

La función lambda anterior acepta un único argumento x y devuelve su cuadrado.

Llamando a la función lambda

Llamar a una función lambda es tan simple como encerrar primero la construcción de la función lambda y luego el argumento entre paréntesis.

Llamada con múltiples argumentos

Para una función lambda con múltiples argumentos, los parámetros de entrada están separados por comas. Los argumentos correspondientes siguen el mismo orden en tiempo de ejecución.

(lambda x, y, z: x**2 + y**2 + z**2)(1, 2, 0)

Expresión condicional única

También puede realizar operaciones condicionales como un bloque if-else, como se muestra en el siguiente ejemplo:

(lambda x: 100 if x > 100 else (50 if x > 50 else x))(75)

Expresión condicional anidada

Dado que se trata de funciones de una sola línea, el anidamiento condicional se realiza mediante paréntesis en lugar de sangría.

(lambda x: 100 if x > 100 else (50 if x > 50 else x))(75)

Una función definida por el usuario correspondiente a la función lambda anterior se ve así:

def conditional_statement_demo(x):
    if x > 100:
        return100
    elif x > 50:
        return 50
    else:
        return x
conditional_statement_demo(75)

Tenga en cuenta que las funciones definidas por el usuario son una mejor opción en un escenario integrado.

Asignar a una variable

Una función lambda también se puede asignar a una variable y llamar como una función definida por el usuario.

square = lambda x: x**2
square(3)

Aunque es posible asignar una función a una variable, rara vez se usa porque anula el único propósito de una función lambda, que es llamarla inmediatamente. La asignación de variables es bastante útil cuando se usa una función lambda dentro de otra función.

Concatenación de cadenas

El siguiente ejemplo muestra cómo concatenar dos cadenas, donde imprime un mensaje de saludo con el nombre de la persona pasado como argumento.

welcome_msg = lambda name : print('Hi', name + '! This is your computer.')
welcome_msg(“Vidhi”)
Output >> Hi Vidhi! This is your computer.

Función anidada

Una función lambda es más poderosa cuando se usa dentro de otra función.

Considere un ejemplo de una función definida por el usuario que toma un solo argumento como exponente de cualquier número.

def power(y):
  return lambda x : x**y
square = power(2)
print(square(5))

Llame con la línea de fondo

¡Hora de un hechizo! Vayamos a otra forma de llamar a la función lambda.

lambda x, y : x**y
_(2,3)

¿Que pasó aquí? Después de definir una función lambda, que es esencialmente una función anónima, se llama usando “_” y argumentos.

Usando con mapa ()

Las funciones lambda se utilizan a menudo como argumentos para las funciones map(). Asigna la secuencia a la función y no requiere una definición explícita (especialmente para operaciones triviales como la siguiente)

print(list(map(lambda x: x**2, range(1,11))))
Output >> [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

map() asigna la secuencia del 1 al 10 a una función lambda y devuelve el cuadrado de todos los elementos de la secuencia.

Usar con reducir()

La función de decremento opera en todos los elementos de la secuencia con la operación definida en la función lambda para devolver un único valor de salida. El ejemplo multiplica todos los elementos de la secuencia de 1 a 4 y calcula el resultado como 1*2*3*4 = 24.

from functools import reduce
print(reduce((lambda x, y: x * y), range(1,5)))

Considere otro ejemplo donde se usa la reducción con una función lambda para devolver más de dos elementos. Cuando se pasa una lista como segundo argumento, devuelve el número más grande de la lista.

lst = [8, 9, 50, 6, 12]
print(reduce(lambda a, b: a if a > b else b, lst))

usando con filtro ()

Otro gran uso de las funciones Lambda es la función filter(). En el siguiente ejemplo, la función lambda devuelve True si el número es impar. Cuando se usa con un filtro, devuelve todos los números impares en una lista.

lst = [12, 2, 8, 46, 3, 34, 68, 92, 49]
result = list(filter(lambda x: (x % 2 != 0), lst))
print(result)

Las funciones Lambda son muy convenientes y ahorran mucho esfuerzo de codificación. El artículo explica la sintaxis de la función lambda y en qué se diferencia de la función definida por el usuario. Esperamos que le haya resultado útil para comenzar con los conceptos básicos de las funciones lambda.

vidhi chugh es un estratega de inteligencia artificial y líder en transformación digital que trabaja en la intersección de productos, ciencia e ingeniería para crear sistemas escalables de aprendizaje automático. Es un líder en innovación galardonado, autor y orador internacional. Tiene la misión de democratizar el aprendizaje automático y romper con la jerga para que todos puedan ser parte de esta transformación.

Leave a Reply

Your email address will not be published. Required fields are marked *