问题描述
因此,我已经使用拆包参数(* x)实现了此功能,但是我想使其显示结果不返回它,并且我希望它很好优化意味着我仍然需要将其作为两行功能
1.def fac(*x):
2.return (fac(list(x)[0],list(x)[1] - 1)*list(x)[1]) if list(x)[1] > 0 else 1//here i need the one line to print the factorial
我尝试通过实现lambda来实现这一目标,但我不知道如何传递* x参数
解决方法
您的阶乘lambda是正确的。我认为您想为列表[1,2,3]计算阶乘并输出结果,这就是您可以实现的方式。
fact = lambda x: x*fact(x-1) if x > 0 else 1
print(*[fact(i) for i in [1,2,3]])
将输出:1,2,6
另一种选择,如果您使用的是python 3.8 ,则需要对新的walrus运算符(:=)使用列表推导,这会比较棘手,但是将计算并输出所有阶乘,直到n包含在内,同时仍适合您所需的两行。
fac,n = 1,5
print(*[fac for i in range(1,n+1) if (fac := fac*i)])
将输出:1、2、6、24、120