在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