一、概述

reduce操作是函数式编程中的重要技术之一,其作用是通过对一个集合的操作,可以从中生成一个值。比如最常见的求和,求最大值、最小值等都是reduce操作的典型例子。python通过内置reduce函数对reduce操作提供了很好的支持。

函数语法:  reduce(function, iterable[,initializer])

函数参数含义如下:

1、function 需要带两个参数,1个是用于保存操作的结果,另一个是每次迭代的元素。

2、iterable 待迭代处理的集合

3、initializer 初始值,可以没有。

reduce函数的运作过程是,当调用reduce方法时:

1、如果存在initializer参数,会先从iterable中取出第一个元素值,然后initializer和元素值会传给function处理;

接着再从iterable中取出第二个元素值,与function函数的返回值 再一起传给function处理,以此迭代处理完所有元素。最后一次处理的function返回值就是reduce函数的返回值。

2、如果不存在initializer参数,会先从iterable中取出第一个元素值作为initializer值,然后以此从iterable取第二个元素及以后的元素进行处理。特殊情况下,如果集合只有一个元素,则无论function如何处理,reduce返回的都是第一个元素的值。

下面我们通过具体的例子来说明。

二、案例

例1:求和

reduce(lambda re,x:re+x,[2,4,6])

结果是12。 这里我们用的是lambda表达式(匿名函数),带两个参数,re就是指的是每次操作后的返回值,这里没带initializer参数,参数x就是代表集合中的元素。

第一轮操作时,re的初始值为第一个元素为2,x为第二个元素4, 运算后re的结果是6.

第二轮操作时,re的值就是上次的结果6,x的值为6,这样结果为12.

因为只有三个元素,又没有initializer参数,所以只会执行两轮。

reduce(lambda re,x:re+x,[2,4,6],10)

结果是22. 这个例子传入了初始化参数10 ,这样re的初始化值为10.

有三个元素,需要操作三轮,结果就是22了。

例2:计算阶乘

reduce(lambda re,x:re*x,range(1,6))

结果为120.  range(1,6)的结果是列表[1,2,3,4,5] , 上面的运算就是计算这些元素的乘积。

三、小结

reduce函数,本质上就是通过传入一个函数和初始值,不断的对集合中的每个元素进行迭代运算,每次运算的结果都作为第二次运算的参数。

和最后一个元素的运算结果作为reduce函数的返回值。

Python函数式编程:内置函数reduce 使用说明的更多相关文章

  1. 跟着ALEX 学python day3集合 文件操作 函数和函数式编程 内置函数

    声明 : 文档内容学习于 http://www.cnblogs.com/xiaozhiqi/  一. 集合 集合是一个无序的,不重复的数据组合,主要作用如下 1.去重 把一个列表变成集合 ,就自动去重 ...

  2. Python基础编程 内置函数

    内置函数 内置函数(一定记住并且精通) print()屏幕输出 int():pass str():pass bool():pass set(): pass list() 将一个可迭代对象转换成列表 t ...

  3. python学习交流 - 内置函数使用方法和应用举例

    内置函数 python提供了68个内置函数,在使用过程中用户不再需要定义函数来实现内置函数支持的功能.更重要的是内置函数的算法是经过python作者优化的,并且部分是使用c语言实现,通常来说使用内置函 ...

  4. python常用的内置函数哈哈

    python常用的内置函数集合做一个归类用的时候可以查找 abs 返回数字x的绝对值或者x的摸 all (iterable)对于可迭代的对象iterable中所有元素x都有bool(x)为true,就 ...

  5. python常用的内置函数

    python常用的内置函数集合做一个归类用的时候可以查找- abs 返回数字x的绝对值或者x的摸 - all (iterable)对于可迭代的对象iterable中所有元素x都有bool(x)为tru ...

  6. 十六. Python基础(16)--内置函数-2

    十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...

  7. 十五. Python基础(15)--内置函数-1

    十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...

  8. Python的常用内置函数介绍

    Python的常用内置函数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.取绝对值(abs) #!/usr/bin/env python #_*_coding:utf-8_ ...

  9. python 常见的内置函数

    内置函数 接下来,我们就一起来看看python里的内置函数.截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就是python提供给你直接可以拿来使用的所有函数.这 ...

随机推荐

  1. 帝国cms7.2自定义列表建立tag效果 代码 教程

    统计记录:(如:select count(*) as total from phome_ecms_news where classid=1 and checked=1) 注:这句SQL的意思是查找统计 ...

  2. 打包mysql、tomcat、jdk为一个软件

    打包mysql.tomcat.jdk为一个软件 博客分类: 成长中的点滴  . 我们在本地开发web应用的时候,直接在IDE里面就可以完成jdk.容器.数据库的配置和集成. 但是如果当我们把应用程序交 ...

  3. 脑波设备mindwave介绍

    脑波,又称之为脑电波,是人大脑发出的电波,非常的微弱,只能通过设备来检测. 人的脑波在不同状态下,会不同,因此可以通过脑波来量化分析人的精神状态. 科学家讲脑电波分为四种,以下为详细解释(摘自百度百科 ...

  4. JAVA GUI学习 - JList列表、JScrollPane滚动条组件学习

    /** * 本例结合JList和JScrollPane共同使用 * @author Wfei * */ public class JListKnow extends JFrame { JList jL ...

  5. fedora 安装pylab 并简单绘制三角函数

    pylab 由 三个部分组成:scipy, matplotlab, numpy三部分组成,安装时需要分别安装这三部分,在fedora中,可以使用命令: sudo dnf install python- ...

  6. Sicily-1443

    一.      题意: 模拟队列的操作,按优先级pop.如果有元素pop,则其他在队列里面的元素的时间都要加1.如果队头的元素因为优先级不够高而要push回队列的时候,所有元素的时间都不用改变. 二. ...

  7. Android开发小记

    一,下载解压adt-bundle,直接可以用来开发了二,新建android项目时不勾选创建activity,来看看如何手动创建activity1,在空项目添加class文件,选择超类为activity ...

  8. IOS数据本地存储的四种方式--

    注:借鉴于:http://blog.csdn.net/jianjianyuer/article/details/8556024 在IOS开发过程中,不管是做什么应用,都会碰到数据保存问题.将数据保存到 ...

  9. beta分布

    http://blog.csdn.net/sweetrryy/article/details/6436358

  10. Nginx阅读笔记(二)之location的用法

    两个配置文件 一: server { listen 80; # # 在本机所有ip上监听80,也可以写为192.168.1.202:80,这样的话,就只监听192.168.1.202上的80口 ser ...