Python map和reduce函数用法示例


Posted in Python onFebruary 26, 2015

先看map。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

举例说明,比如我们有一个函数a(x)=x*2,要把这个函数作用在一个list [1, 2, 3, 4, 5]上,就可以用map()实现如下:

>>> def a(x):

...     return x * 2

... 

>>> map(a, [1,2,3,4,5]) 

[2, 4, 6, 8, 10]

map传入的第一个参数a,即a函数,当然你也可以不用map函数实现这功能:

>>> list = []

>>> for i in [1, 2, 3, 4, 5]:

...     list.append(a(i))

... 

>>> print list

[2, 4, 6, 8, 10]

从代码量上来讲,map要精简很多,所以,map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的a(x)=x*2,还可以计算任意复杂的函数,比如,把这个list所有数字转为字符串:

>>> map(str,[1,2,3,4,5])

['1', '2', '3', '4', '5']

>>>

只需要一行代码,就搞定了。让我们再看和来自顾雪峰python教程的习题:利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:[‘adam', ‘LISA', ‘barT'],输出:[‘Adam', ‘Lisa', ‘Bart']。作为我个人来说,我可能会先将不规范的英文名全转换在小写然后再通过capitalize()函数,将首字母转换在写,代码如下:

>>> def caps(name):

...     return name.capitalize()

... 

>>> def lowers(name):

...     return name.lower()

... 

>>> map(caps, map(lowers,['adam', 'LISA', 'barT']))

['Adam', 'Lisa', 'Bart']

再看reduce的用法。reduce(function, sequence, starting_value):对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用,例如可以用来对List求和:

>>> def add(x, y):

...     return x + y

... 

>>> reduce(add, [1, 3, 5, 7, 9])

25

>>> reduce(add, range(1, 11))

55

>>> reduce(add, range(1, 11),20)

75

当然求和运算可以直接用Python内建函数sum(),没必要动用reduce。但是如果要把序列[1,2,3,4,5,6,7]变换成整数1234567,reduce就可以派上用场:

>>> def fn(x, y):

...     return x * 10 + y

... 

>>> reduce(fn, [1,3,4,5,6,7])

134567
Python 相关文章推荐
Python写的贪吃蛇游戏例子
Jun 16 Python
Python脚本实现网卡流量监控
Feb 14 Python
Python中的with...as用法介绍
May 28 Python
python协程用法实例分析
Jun 04 Python
python针对excel的操作技巧
Mar 13 Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 Python
解决Django migrate No changes detected 不能创建表的问题
May 27 Python
Python Numpy库常见用法入门教程
Jan 16 Python
基于python实现破解滑动验证码过程解析
May 28 Python
Python经纬度坐标转换为距离及角度的实现
Nov 01 Python
浅谈pytorch中的dropout的概率p
May 27 Python
Python 视频画质增强
Apr 28 Python
Python中运行并行任务技巧
Feb 26 #Python
Python通过递归遍历出集合中所有元素的方法
Feb 25 #Python
Python THREADING模块中的JOIN()方法深入理解
Feb 18 #Python
python持久性管理pickle模块详细介绍
Feb 18 #Python
Python中暂存上传图片的方法
Feb 18 #Python
Python中AND、OR的一个使用小技巧
Feb 18 #Python
Python编写屏幕截图程序方法
Feb 18 #Python
You might like
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
Jquery Validate 正则表达式实用验证代码大全
2013/08/23 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
如何在VUE中使用vue-awesome-swiper
2021/01/04 Vue.js
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
2019/05/05 Python
python批量爬取下载抖音视频
2019/06/17 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
python 录制系统声音的示例
2020/12/21 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
CSS3的常见transformation图形变化用法小结
2016/05/13 HTML / CSS
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
青年志愿者事迹材料
2014/02/07 职场文书
2014年保密工作总结
2014/11/22 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript
Go gorilla securecookie库的安装使用详解
2022/08/14 Golang