一行代码实现5!+4!+3!+2!+1!
想要一行代码实现5!+4!+3!+2!+1!?用Java、或者是C,我想应该比较难吧?不过在Python里面却非常的简单。
我们先看看用传统的方法怎么实现:
def do_sum_default(num):
"""默认计算 n! + (n-1)! + 2! + 1"""
num_list = map(lambda n: n + 1, range(num))
res = 0
for n in num_list:
calc_list = [n + 1 for n in range(n)]
res += reduce(lambda x, y: x * y, calc_list)
return res
精简后,代码为:
def do_sum_default(num):
"""默认计算 n! + (n-1)! + 2! + 1"""
num_list = map(lambda n: n + 1, range(num))
res = 0
for n in num_list:
calc_list = [n + 1 for n in range(n)]
res += reduce(lambda x, y: x * y, calc_list)
return res
我们来测试一下:
-
在num值为5时:
print(timeit.timeit("do_sum_default(5)", setup="from __main__ import do_sum_default", number=1000))
print(timeit.timeit("do_sum(5)", setup="from __main__ import do_sum", number=1000))
>>> 0.0152427193959
>>> 0.0210387074335
-
在num值为10时:
print(timeit.timeit("do_sum_default(10)", setup="from __main__ import do_sum_default", number=1000))
print(timeit.timeit("do_sum(10)", setup="from __main__ import do_sum", number=1000))
>>> 0.0387806271467
>>> 0.0510969969647
-
在num值为100时:
print(timeit.timeit("do_sum_default(100)", setup="from __main__ import do_sum_default", number=1000))
print(timeit.timeit("do_sum(100)", setup="from __main__ import do_sum", number=1000))
>>> 2.77467415551
>>> 3.34986541586
结果很明显,用传统的方式执行速度要快得多,所以建议大家不要过于追求代码的简洁性,还要注意执行效率、以及代码的易读性、易维护性。
分享到:
相关推荐
python一行实现代码
python一行代码实现打印打印心形图案,python一行代码实现打印打印心形图案
python实现爱心,一行Python代码就够了。其实绘制图形的思路就是在一个30X30的区域内,对于符合x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 约束的格子,按顺序填入str中的字母。通过列表中的两层循环,...
【资源说明】 基于知识图谱的推荐算法MCRec的python实现源码+项目说明+...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
【资源说明】 数据挖掘大作业基于python实现葡萄酒质量分析源码+超详细...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
<项目介绍> ...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
## 算法原理与程序使用 ...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
<项目介绍> ...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
python 一行代码实现的快速排序 quick sort
基于python+pyQt5+mysql实现的学生宿舍管理系统源码+GUI界面+项目说明文档(数据库课程设计).zip 【配置要求】 文件名 作用 init.pyw 程序入口 public.py 存放公共变量 mainUI.py 主窗口封装类 sql.py 封装数据库操作...
OpenCV实现人脸寻找 ...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
游戏的主题是弹球游戏《PONG》,游戏引擎用的是 Python 的一个游戏库:pgzero,并对游戏的核心规则进行搭建,从而实现弹球游戏的功能。
摘要:1行代码实现人脸识别,1.首先你需要提供一个文件夹,里面是所有你希望系统认识的人的图片。其中每个人一张图片,图片以人的名字命名。2.接下来,你需要准备另一个文件夹,里面是你要识别的图片。3.然后你就可以...
1,输入 一个学生成绩 S,如果S> 90,则输出 “你的成绩非常棒!”;如果成绩80,则输出“你的成绩还是比较优秀...一个数每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153),那么这个数就是水仙花数。
【资源说明】 基于知识图谱的推荐算法MKR的python实现源码(含项目说明+...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
<项目介绍> ...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
【资源说明】 基于知识图谱的推荐算法RippleNet的python实现源码+项目...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
Python百行代码实现点赞系统是一种简单而有效的方式让用户对内容进行评价和互动。这种系统有助于收集用户喜爱的内容,帮助内容提供者了解受众喜好,同时增加用户参与感和互动性。用户通过点击按钮或图标来表示喜爱或...
<h1>Video_Live_Stream ...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
Python基于Django家政服务管理...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------