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编写暴力破解FTP密码小工具
Nov 19 Python
python中self原理实例分析
Apr 30 Python
Python浅拷贝与深拷贝用法实例
May 09 Python
Python中__init__.py文件的作用详解
Sep 18 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
Nov 06 Python
用pandas按列合并两个文件的实例
Apr 12 Python
python得到电脑的开机时间方法
Oct 15 Python
Python3中的bytes和str类型详解
May 02 Python
python实现简单遗传算法
Sep 18 Python
python中判断数字是否为质数的实例讲解
Dec 06 Python
python 多线程爬取壁纸网站的示例
Feb 20 Python
Python可视化神器pyecharts绘制地理图表
Jul 07 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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
js 数值转换为3位逗号分隔的示例代码
2014/02/19 Javascript
js中setTimeout()与clearTimeout()用法实例浅析
2015/05/12 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
javascript获取网页各种高宽及位置的方法总结
2016/07/27 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
让网站自动生成章节目录索引的多个js代码
2018/01/07 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
使用python统计文件行数示例分享
2014/02/21 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
Python pip安装第三方库实现过程解析
2020/07/09 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
2020/11/28 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
2020/12/03 Python
Matplotlib animation模块实现动态图
2021/02/25 Python
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
客服专员岗位职责范本
2013/11/29 职场文书
大学军训感想
2014/02/12 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
基于Python实现西西成语接龙小助手
2022/08/05 Golang