📜  在Python中有 if 但没有 else 的 Lambda

📅  最后修改于: 2022-05-13 01:55:06.783000             🧑  作者: Mango

在Python中有 if 但没有 else 的 Lambda

在Python中, Lambda函数是一个匿名函数,也就是说它是一个没有名字的函数。它可以有任意数量的参数,但只能有一个表达式,该表达式被计算并返回。它必须有一个返回值。

由于 lambda函数对于每个有效输入都必须有一个返回值,我们不能用if但不用else来定义它,因为我们没有指定如果if 条件为假,我们将返回什么,即它的else部分。

让我们通过一个简单的 lambda函数示例来理解这一点,该示例仅在数字大于 0 时才使用if但不使用else对数字进行平方。

示例#1:

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


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


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


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


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


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))


输出:

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

上面执行的代码显示了 SyntaxError,因为我们知道 lambda函数必须返回一个值,如果 x > 0,该函数返回 x*x 并且它没有指定如果 x 的值小于或等于将返回什么0.

为了更正它,我们需要指定如果if 条件为 false 将返回什么,即我们必须指定它的else部分。

让我们看看上面的代码及其else部分。

代码:

蟒蛇3

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

输出:

16

示例#2:第一个代码是if但没有else然后第二个是if-else

蟒蛇3

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

输出:

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

现在,让我们看看它使用 if-else。

蟒蛇3

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

输出:

1

示例 #3:第一个代码是 if 但没有 else 然后第二个是 if-else。

蟒蛇3

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

输出:

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

现在,让我们看看它使用 if-else。

蟒蛇3

# 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))

输出:

2
10