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实现包含min函数的栈
Apr 29 Python
深入浅析python定时杀进程
Jun 06 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
Nov 24 Python
Python中使用支持向量机(SVM)算法
Dec 26 Python
使用Python搭建虚拟环境的配置方法
Feb 28 Python
python3监控CentOS磁盘空间脚本
Jun 21 Python
python 处理数字,把大于上限的数字置零实现方法
Jan 28 Python
Python将json文件写入ES数据库的方法
Apr 10 Python
简单了解为什么python函数后有多个括号
Dec 19 Python
selenium自动化测试入门实战
Dec 21 Python
Python实现微信表情包炸群功能
Jan 28 Python
Python的collections模块真的很好用
Mar 01 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与已存在的Java应用程序集成
2006/10/09 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
jQuery根据纬度经度查看地图处理程序
2013/05/08 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
vue 中使用print.js导出pdf操作
2020/11/13 Javascript
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
Python实现SVN的目录周期性备份实例
2015/07/17 Python
python微信公众号之关键词自动回复
2018/06/15 Python
Python any()函数的使用方法
2019/10/28 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
HTML5中外部浏览器唤起微信分享功能的代码
2020/09/15 HTML / CSS
自动化专业职业生涯规划书范文
2014/01/16 职场文书
销售人员获奖感言
2014/02/05 职场文书
体育教师自我鉴定
2014/02/12 职场文书
研修第一天随笔感言
2014/02/15 职场文书
项目建议书范文
2014/05/12 职场文书
设备收款委托书范本
2014/10/02 职场文书
人事专员岗位职责
2015/02/03 职场文书
幼师个人总结范文
2015/02/28 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
七年级思品教学反思
2016/02/20 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL
Win11 Beta 预览版 22621.575 和 22622.575更新补丁KB5016694发布(附更新内容大全)
2022/08/14 数码科技