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实现Floyd算法
Jan 03 Python
python爬虫爬取网页表格数据
Mar 07 Python
使用Python设计一个代码统计工具
Apr 04 Python
解决pycharm的Python console不能调试当前程序的问题
Jan 20 Python
Python基础之函数的定义与使用示例
Mar 23 Python
python实现QQ空间自动点赞功能
Apr 09 Python
python爬虫基础教程:requests库(二)代码实例
Apr 09 Python
Python3之手动创建迭代器的实例代码
May 22 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
Jan 06 Python
浅析python表达式4+0.5值的数据类型
Feb 26 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
Nov 20 Python
python实现经纬度采样的示例代码
Dec 10 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
PHP动态创建Web站点的方法
2011/08/14 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
PHP使用PDO访问oracle数据库的步骤详解
2017/09/29 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
js正确获取元素样式详解
2009/08/07 Javascript
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
JavaScript中instanceof运算符的用法总结
2013/11/19 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
JavaScript包装对象使用详解
2015/07/09 Javascript
jquery实现的蓝色二级导航条效果代码
2015/08/24 Javascript
JavaScript常用本地对象小结
2016/03/28 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
jquery实现数字输入框
2017/02/22 Javascript
详解vue中axios的封装
2018/07/18 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
布同自制Python函数帮助查询小工具
2011/03/13 Python
python笔记:mysql、redis操作方法
2017/06/28 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
python MultipartEncoder传输zip文件实例
2020/04/07 Python
Python eval函数原理及用法解析
2020/11/14 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
美国宠物商店:Wag.com
2016/10/25 全球购物
企业党建工作汇报材料
2014/08/19 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
贷款收入证明格式
2015/06/24 职场文书
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android