学完这几个优雅的内建函数,就可以做一些有趣的小练习来激发兴趣了。而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语言,怎么也得写十几行吧。

lambda, reduce, map求阶乘之和的更多相关文章

  1. HTML 求阶乘之和

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. lambda、map、reduce、filter函数讲解

    # coding:utf-8 """ 几个特殊的函数: lambda lambda后面直接跟变量 变量后面是冒号 冒号后面是表达式,表达式计算结果就是本函数的返回值 作用 ...

  3. python脚本4_求1到5阶乘之和

    #求1到5阶乘之和 # a = 1 sum = 0 for i in range(1,6): a = i*a sum = sum+a print(sum)

  4. 7-49 求前n项的阶乘之和 (15 分)

    从键盘输入一个整数n,求前n项的阶乘之和,1+2!+3!+...+n!的和 输入格式: 输入一个大于1的整数.例如:输入20. 输出格式: 输出一个整数.例如:2561327494111820313. ...

  5. lambda,filter,map,reduce

    # lambda,filter,map,reduce from functools import reduce print('返回一个迭代器') print((x) for x in range(5) ...

  6. nyoj 91 阶乘之和(贪心)

    阶乘之和 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2!+3! ...

  7. 数论-质数 poj2689,阶乘分解,求阶乘的尾零hdu1124, 求尾零为x的最小阶乘

    /* 要求出[1,R]之间的质数会超时,但是要判断[L,R]之间的数是否是素数却不用筛到R 因为要一个合数n的最大质因子不会超过sqrt(n) 所以只要将[2,sqrt(R)]之间的素数筛出来,再用这 ...

  8. Python之利用reduce函数求序列的最值及排序

    在一般将Python的reduce函数的例子中,通常都是拿列表求和来作为例子.那么,是否还有其他例子呢?   本次分享将讲述如何利用Python中的reduce函数对序列求最值以及排序.   我们用r ...

  9. java 递归及其经典应用--求阶乘、打印文件信息、计算斐波那契数列

    什么是递归 我先看下百度百科的解释: 一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的.用递归过程定义的函数,称为递归函数,例如连加.连乘及阶乘等.凡是递归的函数,都是可计算的,即 ...

随机推荐

  1. 我的学习笔记之API-Guides翻译------AppComponent_Activites

    10.26第一天开始:贵在坚持,边看遍整理 一个应用程序通常由多个Activity组成,它们之间是松耦合的关系.特别的,有一个Activity作为app的主Activity,当app首次启动时呈现给用 ...

  2. mysql 存储过程 游标的使用 与定义

    1.游标的作用及属性 游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作:游标有下面这些属性: a.游标是只读的,也就是不能更新它: b.游标是不能滚动的,也就是只能在一个方向上进 ...

  3. google base库之simplethread

    // This is the base SimpleThread. You can derive from it and implement the // virtual Run method, or ...

  4. FAT下的winhex数据恢复

    一·我在自己的U盘中建一个一个文件abc.word,然后删除 二·用winhex打开需要恢复的磁盘 我这是U盘 I:按确定打开它 三.来到它的根目录下 四·查找文件名,找到文件目录项 文件起始簇号:5 ...

  5. C++ HttpServlet 高并发多线程 HTTP 服务器(转)

    from:http://www.oschina.net/code/snippet_568966_43193   C/C++ 程序虽然执行效率高,但程序员在开发 WEB 应用时却因为没有好的 WEB 开 ...

  6. <转>四个重要属性——Action、Data、Category、Extras

    Intent作为联系各Activity之间的纽带,其作用并不仅仅只限于简单的数据传递.通过其自带的属性,其实可以方便的完成很多较为复杂的操作.例如直接调用拨号功能.直接自动调用合适的程序打开不同类型的 ...

  7. springmvc入门demo

    目录结构: package com.wyl; import org.springframework.stereotype.Controller; import org.springframework. ...

  8. Linux中的盘符问题

    在windows 中像 C.D.E.F这些都可以当盘符,就是说对应了我们所看到的C盘,D盘,E盘,F盘.然而是不是只能加26个硬盘了呢? 盘符到硬盘也只是一个对映关系,我们也是可以建立从一个文件夹到一 ...

  9. System timers granularity

    http://code.google.com/p/javasimon/wiki/SystemTimersGranularity

  10. Ceph相关博客、网站(256篇OpenStack博客)

    官网文档: http://docs.ceph.com/docs/master/cephfs/ http://docs.ceph.com/docs/master/cephfs/createfs/   ( ...