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数据库操作常用功能使用详解(创建表/插入数据/获取数据)
Dec 06 Python
python处理中文编码和判断编码示例
Feb 26 Python
列举Python中吸引人的一些特性
Apr 09 Python
python SSH模块登录,远程机执行shell命令实例解析
Jan 12 Python
对Python中DataFrame选择某列值为XX的行实例详解
Jan 29 Python
将Python文件打包成.EXE可执行文件的方法
Aug 11 Python
python3中替换python2中cmp函数的实现
Aug 20 Python
详解python 降级到3.6终极解决方案
Feb 06 Python
Python Selenium安装及环境配置的实现
Mar 17 Python
python实现文件+参数发送request的实例代码
Jan 05 Python
python Matplotlib基础--如何添加文本和标注
Jan 26 Python
Python之基础函数案例详解
Aug 30 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
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
收藏的PHP常用函数 推荐收藏保存
2010/02/21 PHP
PHPCMS的使用小结
2010/09/20 PHP
PHP常用函数和常见疑难问题解答
2014/03/05 PHP
PHP常用的缓存技术汇总
2014/05/05 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
PHP封装的非对称加密RSA算法示例
2018/05/28 PHP
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
2014/06/16 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
js跨域资源共享 基础篇
2016/07/02 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
Vue源码解析之Template转化为AST的实现方法
2018/12/14 Javascript
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python字符串转换成浮点数函数分享
2015/07/24 Python
浅谈python多线程和队列管理shell程序
2015/08/04 Python
Python wxPython库Core组件BoxSizer用法示例
2018/09/03 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
Python实现随机爬山算法
2021/01/29 Python
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
学生自我鉴定
2013/12/18 职场文书
餐厅销售主管职责范本
2014/02/19 职场文书
高中军训感言200字
2014/02/23 职场文书
读群众路线心得体会
2014/03/07 职场文书
个人简历自荐信
2014/06/26 职场文书
python3 sqlite3限制条件查询的操作
2021/04/07 Python
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python