Lambda con if pero sin else en Python

En Python, la función Lambda es una función anónima, lo que significa que es una función sin nombre. Puede tener cualquier número de argumentos, pero solo una expresión, que se evalúa y se devuelve. Debe tener un valor de retorno.

Dado que una función lambda debe tener un valor de retorno para cada entrada válida, no podemos definirla con if pero sin else ya que no estamos especificando qué devolveremos si la condición if es falsa, es decir, su parte else .

Entendamos esto con un ejemplo simple de función lambda para elevar al cuadrado un número solo si es mayor que 0 usando if pero sin else .

Ejemplo 1:

Python3

# Lambda function with if but without else.
square = lambda x : x*x if(x > 0)
 
print(square(6))

Producción:

File "/home/2c8c59351e1635b6b026fb3c7fc17c8f.py", line 2
    square = lambda x : x*x if(x > 0)
                                    ^
SyntaxError: invalid syntax

El código anterior en ejecución muestra SyntaxError, ya que sabemos que una función lambda debe devolver un valor y esta función devuelve x*x si x > 0 y no especifica qué se devolverá si el valor de x es menor o igual que 0.

Para corregirlo, necesitamos especificar qué se devolverá si la condición if es falsa, es decir, debemos especificar su parte else .

Veamos el código anterior con su otra parte.

Código:

Python3

# Lambda function with if-else
square = lambda x : x*x if(x > 0) else None
 
print(square(4))

Producción:

16

Ejemplo #2: El primer código es con if pero sin else , el segundo es con if-else .

Python3

# Example of lambda function using if without else
mod = lambda x : x if(x >= 0)
 
print(mod(-1))

Producción:

File "/home/20b09bdd29e24dfe24c185cd99dfcdfa.py", line 2
    mod = lambda x : x if(x >= 0)
                                ^
SyntaxError: invalid syntax

Ahora, veámoslo usando if-else.

Python3

# Example of lambda function using if-else
mod = lambda x : x if(x >= 0) else -x
 
print(mod(-1))

Producción:

1

Ejemplo #3: El primer código es con if pero sin else, el segundo es con if-else.

Python3

# Example of lambda function using if without else
max = lambda a, b : x if(a > b)
 
print(max(1, 2))

Producción:

File "/home/8cf3856fc13d0ce75edfdd76793bdde4.py", line 2
    max = lambda a, b : x if(a > b)
                                  ^
SyntaxError: invalid syntax

Ahora, veámoslo usando if-else.

Python3

# Example of lambda function using if-else
max = lambda a, b : a if(a > b) else b
 
print(max(1, 2))
print(max(10, 2))

Producción:

2
10

Publicación traducida automáticamente

Artículo escrito por piyushtiwari515 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 *