Pasar varios argumentos en funciones Lambda en Python

Vaibhav Vaibhav 22 enero 2022
  1. Funciones Lambda en Python
  2. Pasar varios argumentos en funciones Lambda
Pasar varios argumentos en funciones Lambda en Python

Las formas lambda o expresiones lambda son funciones anónimas en Python. Son funciones en línea que se pueden crear usando la palabra clave reservada lambda en Python.

Este artículo hablará sobre las funciones lambda en Python y aprenderá cómo lidiar con múltiples argumentos en ellas.

Funciones Lambda en Python

Una función lambda consta de tres partes: la palabra clave lambda, los parámetros o las variables vinculadas y el cuerpo de la función. El cuerpo de la función solo puede tener una única expresión de Python ya que estas funciones están en línea.

Estas funciones no solo se pueden invocar de inmediato, sino que también se pueden usar como otras funciones normales de Python.

Las funciones Lambda tienen la siguiente sintaxis:

lambda < parameters comma seperated >: expression

Tenga en cuenta que la expresión en el cuerpo de la función debería devolver algún valor. Si la expresión no devuelve ningún valor, el resultado de una función lambda será un valor None.

Para la invocación en línea, rodeamos la función lambda entre paréntesis y colocamos los valores de los argumentos junto a ella entre paréntesis.

A continuación se muestra la sintaxis para esto:

(lambda < parameters comma seperated > : expression) ( < parameters comma seperated > )

Para comprender estas funciones lambda, creemos una función lambda que multiplique dos números. Como comentamos que estas funciones podrían invocarse inmediatamente y usarse como funciones regulares de Python, los ejemplos incluirán ambas versiones de las funciones lambda.

Consulte el siguiente código para ver el ejemplo de multiplicación:

# Regular function calls
def multiply(a, b):
    return a * b


print(multiply(1, 2))
print(multiply(10, 5))
print(multiply(10.5, 9.3))
print(multiply(0.945, -5.645))
print(multiply(1000e9, 0), end="\n\n")

# Inline invocation
print((lambda a, b: a * b)(1.1, 1.2))
print((lambda a, b: a * b)(10, 5))
print((lambda a, b: a * b)(10.5, 9.3))
print((lambda a, b: a * b)(0.945, -5.645))
print((lambda a, b: a * b)(1000e9, 0))

Producción :

2
50
97.65
-5.334524999999999
0.0
1.32
50
97.65
-5.334524999999999
0.0

Para hacerlo aún más preciso, consideremos tres ejemplos más en los que filtraremos valores impares de una lista de números, calcularemos cuadrados de elementos de una lista y calcularemos raíces cúbicas de elementos de una lista.

Consulte el siguiente código de Python para ver el primer ejemplo:

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [22, 44, 66, 88, 110]
z = [78, 9797, 97, 985, 75473, 2845, 74, 9964, 652, 124, 0, 6747]

# Regular function calls


def filter_odd(a):
    return a % 2 != 0


print(list(filter(filter_odd, x)))
print(list(filter(filter_odd, y)))
print(list(filter(filter_odd, z)), end="\n\n")

# Inline invocation
print((lambda array: list(filter(lambda a: a % 2 != 0, array)))(x))
print((lambda array: list(filter(lambda a: a % 2 != 0, array)))(y))
print((lambda array: list(filter(lambda a: a % 2 != 0, array)))(z))

Producción :

[1, 3, 5, 7, 9]
[]
[9797, 97, 985, 75473, 2845, 6747]

[1, 3, 5, 7, 9]
[]
[9797, 97, 985, 75473, 2845, 6747]

Consulte el siguiente fragmento de código de Python para ver el segundo ejemplo:

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [22, 44, 66, 88, 110]
z = [78, 9797, 97, 985, 75473, 2845, 74, 9964, 652, 124, 0, 6747]

# Regular function calls


def square(a):
    return a ** 2


print(list(map(square, x)))
print(list(map(square, y)))
print(list(map(square, z)), end="\n\n")

# Inline invocation
print((lambda array: list(map(lambda a: a ** 2, array)))(x))
print((lambda array: list(map(lambda a: a ** 2, array)))(y))
print((lambda array: list(map(lambda a: a ** 2, array)))(z))

Producción :

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[484, 1936, 4356, 7744, 12100]
[6084, 95981209, 9409, 970225, 5696173729, 8094025, 5476, 99281296, 425104, 15376, 0, 45522009]

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[484, 1936, 4356, 7744, 12100]
[6084, 95981209, 9409, 970225, 5696173729, 8094025, 5476, 99281296, 425104, 15376, 0, 45522009]

Y, consulte el siguiente fragmento de código de Python para el tercer ejemplo:

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [22, 44, 66, 88, 110]
z = [78, 9797, 97, 985, 75473, 2845, 74, 9964, 652, 124, 0, 6747]

# Regular function calls


def square(a):
    return a ** (1 / 3)


print(list(map(square, x)))
print(list(map(square, y)))
print(list(map(square, z)), end="\n\n")

# Inline invocation
print((lambda array: list(map(lambda a: a ** (1 / 3), array)))(x))
print((lambda array: list(map(lambda a: a ** (1 / 3), array)))(y))
print((lambda array: list(map(lambda a: a ** (1 / 3), array)))(z))

Producción :

[1.0, 1.2599210498948732, 1.4422495703074083, 1.5874010519681994, 1.7099759466766968, 1.8171205928321397, 1.912931182772389, 2.0, 2.080083823051904, 2.154434690031884]
[2.802039330655387, 3.530348335326063, 4.04124002062219, 4.4479601811386305, 4.791419857062784]
[4.272658681697917, 21.397565740522946, 4.594700892207039, 9.949747895601458, 42.2601016892268, 14.169703309060843, 4.198336453808407, 21.518462597981888, 8.671266460286839, 4.986630952238645, 0.0, 18.896015508976504]

[1.0, 1.2599210498948732, 1.4422495703074083, 1.5874010519681994, 1.7099759466766968, 1.8171205928321397, 1.912931182772389, 2.0, 2.080083823051904, 2.154434690031884]
[2.802039330655387, 3.530348335326063, 4.04124002062219, 4.4479601811386305, 4.791419857062784]
[4.272658681697917, 21.397565740522946, 4.594700892207039, 9.949747895601458, 42.2601016892268, 14.169703309060843, 4.198336453808407, 21.518462597981888, 8.671266460286839, 4.986630952238645, 0.0, 18.896015508976504]

Pasar varios argumentos en funciones Lambda

Para pasar múltiples argumentos en la función lambda, debemos mencionar todos los parámetros separados por comas. Entendamos esto con un ejemplo.

Crearemos una función lambda que toma tres parámetros; una lista y dos enteros. La función lambda sumará el primer número entero y restará el segundo número entero de cada elemento de la lista.

Consulte el siguiente código de Python para esto:

x1 = [1, 8, 27, 64, 125, 216, 343, 512]
x2 = 5
x3 = 6
y1 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
y2 = 4
y3 = 1
z1 = [78, 9797, 97, 985, 75473, 2845, 74]
z2 = 99
z3 = 99

# Regular function calls


def modify(a, b, c):
    return [x + b - c for x in a]


print(modify(x1, x2, x3))
print(modify(y1, y2, y3))
print(modify(z1, z2, z3), end="\n\n")

# Inline invocation
print((lambda a, b, c: [x + b - c for x in a])(x1, x2, x3))
print((lambda a, b, c: [x + b - c for x in a])(y1, y2, y3))
print((lambda a, b, c: [x + b - c for x in a])(z1, z2, z3))

Producción :

[0, 7, 26, 63, 124, 215, 342, 511]
[14, 25, 36, 47, 58, 69, 80, 91, 102]
[78, 9797, 97, 985, 75473, 2845, 74]

[0, 7, 26, 63, 124, 215, 342, 511]
[14, 25, 36, 47, 58, 69, 80, 91, 102]
[78, 9797, 97, 985, 75473, 2845, 74]
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Artículo relacionado - Python Function

Artículo relacionado - Python Lambda Function