在 Python 中一行编写阶乘函数

Ely*_*Ely 6 python lambda function python-2.x

我希望通过以不同的方式执行相同的代码来改进我的编码,这不仅是为了帮助我更好地编码,而且还可以理解不同人的代码和他们的编码风格。有人可以解释一下我如何能够纠正类似于下面在一行中发布的阶乘函数吗?也欢迎使用 lambda 函数。

def factorial(number):
    fact = 1
    for i in range(1, number + 1):
        fact *= i
    return fact
Run Code Online (Sandbox Code Playgroud)

我知道我可以递归地写这个,但我选择不这样做。

blh*_*ing 0

您可以借助内置函数编写单行 lambda 函数(尽管如果升级到 Python 3.x,则reduce必须reduce从中导入)。functools请注意,最后一个参数将初始值设置为,1以便0!仍然可以工作:

lambda x: reduce(int.__mul__, range(1, x + 1), 1)
Run Code Online (Sandbox Code Playgroud)

以便:

print((lambda x: reduce(int.__mul__, range(1, x + 1), 1))(4))
Run Code Online (Sandbox Code Playgroud)

24例如,将输出。