微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在python中优化阶乘函数

如何解决在python中优化阶乘函数

因此,我已经使用拆包参数(* 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。