包含 if 语句的 Lambda 函数
Lambda function containing if statement
有什么方法可以编写包含 if 和 lambda 的递归函数吗?
可以使用 lambda 重写它。
def factorial(x):
if x <= 1:
return 1
return x * factorial(x - 1)
print(factorial(5))
没有,或者至少没有将函数分配给变量然后使用该名称调用它。但是你仍然不能在函数中使用任何语句。
无论如何,不要那样做。 lambda
函数 完全 类似于 Python 中的普通 def
函数,除了它不能包含语句的限制。
在 Python 中使用 lambda 的唯一原因是如果您只需要一个简单的可调用函数返回一些值,就可以避免定义命名函数。
是的,对于这种特定情况是可能的。
>>> factorial = lambda x: 1 if x < 1 else x * factorial(x - 1)
>>> factorial(5)
120
不过我不推荐它。标准函数定义对我来说似乎更具可读性。
>>> l = lambda i: 1 if i<=1 else i * l(i-1)
>>> l(5)
120
>>> 5*4*3*2*1
120
有什么方法可以编写包含 if 和 lambda 的递归函数吗? 可以使用 lambda 重写它。
def factorial(x):
if x <= 1:
return 1
return x * factorial(x - 1)
print(factorial(5))
没有,或者至少没有将函数分配给变量然后使用该名称调用它。但是你仍然不能在函数中使用任何语句。
无论如何,不要那样做。 lambda
函数 完全 类似于 Python 中的普通 def
函数,除了它不能包含语句的限制。
在 Python 中使用 lambda 的唯一原因是如果您只需要一个简单的可调用函数返回一些值,就可以避免定义命名函数。
是的,对于这种特定情况是可能的。
>>> factorial = lambda x: 1 if x < 1 else x * factorial(x - 1)
>>> factorial(5)
120
不过我不推荐它。标准函数定义对我来说似乎更具可读性。
>>> l = lambda i: 1 if i<=1 else i * l(i-1)
>>> l(5)
120
>>> 5*4*3*2*1
120