Python学习笔记(二)reduce()函数

原创 2018年04月17日 14:56:49

reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。

例如,编写一个f函数,接收x和y,返回x和y的和:

def f(x, y):
    return x + y

调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算:

先计算头两个元素:f(1, 3),结果为4;
再把结果和第3个元素计算:f(4, 5),结果为9;
再把结果和第4个元素计算:f(9, 7),结果为16;
再把结果和第5个元素计算:f(16, 9),结果为25;
由于没有更多的元素了,计算结束,返回结果25。

上述计算实际上是对 list 的所有元素求和。虽然Python内置了求和函数sum(),但是,利用reduce()求和也很简单。

reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100,计算:

reduce(f, [1, 3, 5, 7, 9], 100)

结果将变为125,因为第一轮计算是:

计算初始值和第一个元素:f(100, 1),结果为101

任务

Python内置了求和函数sum(),但没有求积的函数,请利用recude()来求积:

输入:[2, 4, 5, 7, 12]
输出:2*4*5*7*12的结果


def prod(x, y):
    return x*y

print reduce(prod, [2, 4, 5, 7, 12])

python里使用reduce()函数

reduce()函数在库functools里,如果要使用它,要从这个库里导入。reduce函数与map函数有不一样地方,map操作是并行操作,reduce函数是把多个参数合并的操作,也就是从多个条件简...
  • caimouse
  • caimouse
  • 2017-09-29 08:31:09
  • 1727

Python reduce()函数的用法

Python函数式编程之reduce()reduce() 格式: reduce (func, seq[, init()]) reduce()函数即为化简函数,它的执行过程为:每一次迭代,都将上一...
  • SeeTheWorld518
  • SeeTheWorld518
  • 2015-07-20 23:04:22
  • 3688

python中reduce函数的用法

1.说明reduce:将一个可以迭代的对象应用到两个带有参数的方法上,我们称这个方法为fun,遍历这个可迭代的对象,将其中元素依次作为fun的参数,但是这个函数有两个参数,那些作为参数呢?reduce...
  • taxueguilai1992
  • taxueguilai1992
  • 2015-12-22 22:03:53
  • 3003

Python:reduce在python高级版本中没有的原因

在Python 3里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里 用的话要 先引入 from functools import reduce ...
  • DeniuHe
  • DeniuHe
  • 2017-08-31 23:31:04
  • 2812

Python reduce()求积

声明: 我写此文的目的是帮助和我一样在廖雪峰老师官网上学习Python3的同学更好的理解和学习Python的知识,所以本博文及后续文章会跟着我的学习进度来走,主要内容是廖雪峰老师官网Python资...
  • zmy_3
  • zmy_3
  • 2016-04-21 15:07:23
  • 2569

python map(),reduce()函数的使用

map()函数:接收两个参数:一个是函数,一个是序列,map函数将传入的函数一次作用到序列的每个元素,若传入的函数有返回则把结果作为新的序列返回.反之,返回空序列(字符串也是序列)reduce()函数...
  • lym152898
  • lym152898
  • 2016-06-05 17:48:10
  • 1036

Python 中 map和reduce 的用法

首先是map:接受两个参数,第一个是函数,第二个是一个可迭代的的参数(Iterable)如下例子,我们定义一个函数f(x)=x^2#map的用法 def func(x): return x*x...
  • zjq_1314520
  • zjq_1314520
  • 2017-07-30 10:47:16
  • 884

Python笔记|Python3中没有reduce函数的原因

原因 因为 Guido 先生讨厌 reduce。(Because Guido hates it. ) 详细过程请翻阅原文:http://www.artima.com/forums/fla...
  • nigelyq
  • nigelyq
  • 2018-02-07 18:07:11
  • 231

Python3.4中filter函数,map函数和reduce函数

filter函数: filter()为已知的序列的每个元素调用给定的布尔函数,调用中,返回值为非零的元素将被添加至一个列表中 >>> def f1(x): if x > 20: return Tru...
  • damotiansheng
  • damotiansheng
  • 2015-03-08 22:28:09
  • 39272

python中reduce实现阶乘

python用reduce实现阶乘
  • xiaolong650
  • xiaolong650
  • 2016-10-20 10:36:50
  • 427
收藏助手
不良信息举报
您举报文章:Python学习笔记(二)reduce()函数
举报原因:
原因补充:

(最多只允许输入30个字)