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判断字符串编码的简单实现方法(使用chardet)
Jul 01 Python
深入分析python中整型不会溢出问题
Jun 18 Python
python 拼接文件路径的方法
Oct 23 Python
Python3多线程基础知识点
Feb 19 Python
Django框架模型简单介绍与使用分析
Jul 18 Python
Python + Flask 实现简单的验证码系统
Oct 01 Python
通过实例了解python property属性
Nov 01 Python
python数据预处理 :数据抽样解析
Feb 24 Python
keras 多任务多loss实例
Jun 22 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
Jun 23 Python
如何利用python发送邮件
Sep 26 Python
python简单实现插入排序实例代码
Dec 16 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新手谈谈我的学习心得
2007/02/25 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
jstree单选功能的实现方法
2017/06/07 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
vue bus全局事件中心简单Demo详解
2018/02/26 Javascript
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
vue路由传参三种基本方式详解
2019/12/09 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
Python中input和raw_input的一点区别
2014/10/21 Python
Python使用matplotlib实现绘制自定义图形功能示例
2018/01/18 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
2019/04/15 Python
django admin组件使用方法详解
2019/07/19 Python
django实现类似触发器的功能
2019/11/15 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
美国在线珠宝商店:SZUL
2017/02/11 全球购物
德国受欢迎的旅游和休闲网站:lastminute.de
2019/09/23 全球购物
工程管理造价应届生求职信
2013/11/13 职场文书
写自荐信三大法宝
2014/01/24 职场文书
奥巴马就职演讲稿
2014/05/15 职场文书
新闻编辑专业自荐信
2014/07/02 职场文书
学校纪律作风整改措施思想汇报
2014/10/11 职场文书
小学班主任事迹材料
2014/12/17 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
2015双创工作总结
2015/07/24 职场文书