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的加密模块md5、sha、crypt使用实例
Sep 28 Python
python使用pandas实现数据分割实例代码
Jan 25 Python
python使用PIL模块获取图片像素点的方法
Jan 08 Python
python 发送和接收ActiveMQ消息的实例
Jan 30 Python
详解python中的线程与线程池
May 10 Python
PyQt5实现从主窗口打开子窗口的方法
Jun 19 Python
在Python中获取操作系统的进程信息
Aug 27 Python
python返回数组的索引实例
Nov 28 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
Dec 23 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
Python字符串格式化常用手段及注意事项
Jun 17 Python
python自动化测试之Selenium详解
Mar 13 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
windows下开发并编译PHP扩展的方法
2011/03/18 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
33道php常见面试题及答案
2015/07/06 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
jQuery实现本地预览上传图片功能
2016/01/08 Javascript
实例浅析js的this
2016/12/11 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
Python写的贪吃蛇游戏例子
2014/06/16 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
python next()和iter()函数原理解析
2020/02/07 Python
python全栈开发语法总结
2020/11/22 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
Python 中 sorted 如何自定义比较逻辑
2021/02/02 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
英国健身专家:WIT Fitness
2021/02/09 全球购物
毕业生简单求职信
2013/11/19 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
应届大专毕业生自我鉴定
2014/04/08 职场文书
《傅雷家书》教学反思
2014/04/20 职场文书
授权委托书范文
2014/07/31 职场文书
党员十八大心得体会
2014/09/12 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话全文
2014/10/25 职场文书
九华山导游词
2015/02/03 职场文书
慰问信范文
2015/02/14 职场文书
地道战观后感300字
2015/06/04 职场文书
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle
Golang解析JSON对象
2022/04/30 Golang