快速用lambda, reduce, map求阶乘之和

用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))
  4. n以内的平方和求和
    求和也用reduce函数, 最终代码如下

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

扫描二维码关注公众号,回复: 1465854 查看本文章

猜你喜欢

转载自blog.csdn.net/sun_daming/article/details/80425169