学完这几个优雅的内建函数,就可以做一些有趣的小练习来激发兴趣了。而python最大的好处便是简洁,看下边要求

用1行代码求 1! + 2! + 3! + ... + 10!

  1. 求阶乘

    reduce函数用来做累积累和

    def fact(n)
    reduce(lambda x, y: x * y, range(1, n + 1))

    精简成lambda函数

    lambda n: reduce(lambda x, y: x * y, range(1, n + 1))
  2. 映射列表,求1到10的阶乘,返回一个列表

    map(fact, range(1, 11))

    把fact函数展开

    map(lambda n: reduce(lambda x, y: x * y, range(1, n + 1)), range(1, 11))
  3. 求和

    求和自然也用reduce函数, 最终代码如下

    reduce(lambda x, y: x + y, map(lambda n: reduce(lambda x, y: x * y, range(1, n + 1)), range(1, 11)))

    如果是求1到m的阶乘之和,则是

    reduce(lambda x, y: x + y, map(lambda n: reduce(lambda x, y: x * y, range(1, n + 1)), range(1, m+1)))

写完以上代码,对python最大的感受就是简洁吧(虽然上述代码写到一行,可读性有些差)。如果换成C语言,怎么也得写十几行吧。

最新文章

  1. javascript 键盘输入过滤,只能输入数字,小数一位且只能输入5
  2. fork()函数详解
  3. 用SQL语句添加删除修改字段
  4. Oracle Imp and Exp (导入和导出) 数据 工具使用
  5. shell中if判断一个变量为空
  6. jsp 嵌套iframe 从iframe中表单提交并传值到外层
  7. innode 节点
  8. [LeetCode] Word Search [37]
  9. Linux命令之修改主机名
  10. cpp(第八章)
  11. Cactus
  12. mybatis if条件查询 及<号的问题
  13. [css 揭秘]:CSS编码技巧
  14. EBS开发常用编译命令
  15. ***PHP基于H5的微信支付开发详解(CI框架)
  16. nyoj 119士兵杀敌(三)(线段树区间最值查询,RMQ算法)
  17. 如何构建日均千万PV Web站点(二) 之~缓存为王~
  18. 【盘古分词】Lucene.Net 盘古分词 实现公众号智能自动回复
  19. Dropwizard与Spring Boot比较
  20. C++11新特性之七——final/override控制

热门文章

  1. 总结:C#变量,占位符等相关知识
  2. CSS中的 REM PX EM
  3. UITextField 光标的位置设置获取
  4. vs 中 vim vax 快捷键
  5. Linux 抓包
  6. Spark源码学习2
  7. C# 中使用Newtonsoft.Json 处理JSON数据 绝对能用
  8. hdu 4628 Pieces 状压dp
  9. java附件上传下载大字段版
  10. HDOJ-ACM Steps