Python函数式编程:内置函数reduce 使用说明
一、概述
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 使用说明的更多相关文章
- 跟着ALEX 学python day3集合 文件操作 函数和函数式编程 内置函数
声明 : 文档内容学习于 http://www.cnblogs.com/xiaozhiqi/ 一. 集合 集合是一个无序的,不重复的数据组合,主要作用如下 1.去重 把一个列表变成集合 ,就自动去重 ...
- Python基础编程 内置函数
内置函数 内置函数(一定记住并且精通) print()屏幕输出 int():pass str():pass bool():pass set(): pass list() 将一个可迭代对象转换成列表 t ...
- python学习交流 - 内置函数使用方法和应用举例
内置函数 python提供了68个内置函数,在使用过程中用户不再需要定义函数来实现内置函数支持的功能.更重要的是内置函数的算法是经过python作者优化的,并且部分是使用c语言实现,通常来说使用内置函 ...
- python常用的内置函数哈哈
python常用的内置函数集合做一个归类用的时候可以查找 abs 返回数字x的绝对值或者x的摸 all (iterable)对于可迭代的对象iterable中所有元素x都有bool(x)为true,就 ...
- python常用的内置函数
python常用的内置函数集合做一个归类用的时候可以查找- abs 返回数字x的绝对值或者x的摸 - all (iterable)对于可迭代的对象iterable中所有元素x都有bool(x)为tru ...
- 十六. Python基础(16)--内置函数-2
十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...
- 十五. Python基础(15)--内置函数-1
十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...
- Python的常用内置函数介绍
Python的常用内置函数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.取绝对值(abs) #!/usr/bin/env python #_*_coding:utf-8_ ...
- python 常见的内置函数
内置函数 接下来,我们就一起来看看python里的内置函数.截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就是python提供给你直接可以拿来使用的所有函数.这 ...
随机推荐
- java断言
public class New{ public static void main(String[] args){ assert false; System.out.println("pas ...
- 转: object 和embed 标签播放flash
一.介绍: 我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标 签.也就是OBJECT和 EMBED标签.OBJECT标签是用于windows平台的IE浏览器的,而EMBE ...
- 链队列之C++实现
链队列时建立在单链表的基础之上的.由于是动态分配节点内存,所以无需判满. 链队列的形式如下: 1.队列空 2.队列存在数据 下面介绍下C++实现的链队列,VC6下调试通过. 1.文件组织 2.lq.h ...
- 快速注册Uber司机,兼职月入轻松过万
Uber是世界领先的即时用车网络平台.当前部分中国城市,Uber司机只需每周完成70单,可获得7000元的激励制度回报司机,月收入近3万元.[加入条件]1. 车辆为本地牌照2. 车龄在5年以内3. 裸 ...
- Objective-c 方法的调用
在书写了类的声明和实现后,应用程序如何去调用它呢? 在Objective-c中,调用方法的简单格式如下: 1⃣ [实例 方法]; 如: [person setAge:32]; 其中 pe ...
- CSS的display、hover、overflow、©(版权符号)、borer-radius(边框圆角)
一.display: none 隐藏 block显示 visibility:hidden隐藏 visible显示 display:none和visibility:hidden这两个属性对应的值 ...
- 服务器忘记mysql密码怎么修改?
找到配置文件my.ini ,然后将其打开,可以选择用记事本打开 打开后,搜索mysqld关键字 找到后,在mysqld下面添加skip-grant-tables,保存退出. PS:若提示不让保存时, ...
- python中的字符串和数字连接
1. 将数字强制转换成字符串 i = 1000 str1 = "hello" print str1 + str(i) 2. 格式化成字符串 i = 1000 str1 = &quo ...
- dede修改移动文档的js
dede后台弹框修改: 想做个类似文章列表的移动功能,弹框,然后修改成功到表 先在list.js里复制一份moveArc的方法,到archives_do.php里复制一份moveArchives的方法 ...
- IE 兼容性问题
1.IE6-IE7 可能会有2个class属性,真TMD蛋疼,一个是初始的,后来的是js赋值的 2.不同浏览器的标签默认的margin和padding不同 解决方法: * { margin:0; pa ...