这篇文章我们将通过几个小例子,介绍一下Python中map函数的使用,开头的几个例子,主要是介绍map的语法使用技术,最后我们会通过一个实际工作中的例子,演示一下map的实际应用案例,使读者有一个更加感性的认识 。由于Python2和Python3对map进行了调整,所以本文将以Python2为例进行介绍 。
map函数的第1个参数是一个函数,第2个参数是一个序列(sequence)或者是可以迭代的对象,返回值是一个列表(list) 。map函数的工作流程就是迭代第2个参数中的每一个元素,将其传递给第1个参数指定的函数中,经过处理后,再把所有的元素组合成一个列表 。说起来比较拗口,我们来个基本的小例子,演示一下 。
![3分钟学会map函数的使用 python map函数用法](http://imgsh.easyfang.com/230603/1J3441037-0.jpg)
文章插图
在这个例子中,我们假定计算一下指定列表对应的平方数和立方数 。map函数将针对list_sample1中的每一个元素,逐一调用square,并完成计算后,返回对应的平方数 。最终结果是一个立方数的列表 。在本例中,1,2,3,4对应的平方数为1,4,9,16,立方数为1,8,27,64 。map函数依次计算1*1=1,2*2=4,3*3=9,4*4=16 。最后形成列表[1,4,9,16] 。程序的运行结果如下:
![3分钟学会map函数的使用 python map函数用法](http://imgsh.easyfang.com/230603/1J3441311-1.jpg)
文章插图
上面的程序演示了基本的用法,而map函数是可以传入多个序列或可迭代对象的,当传入两个序列或可迭代对象时,map函数将依次根据两个序列的对应位置的元素,即A列表的第1个元素对应B列表的第1个元素应用指定函数进行处理 。下面我们看个实例 。
![3分钟学会map函数的使用 python map函数用法](http://imgsh.easyfang.com/230603/1J3441Q1-2.jpg)
文章插图
在这个例子中两个列表的元素是1–>11,2–>12,3–>13,4–>14 。因此每次multiple函数在调用时,都是成对传入参数,比如第1次传入1和11,而1*11=11,所以返回11;第2次传入2和12,则2*12=24,返回24 。以此类推,3*13=39,4*14=56,最后形成列表返回值 。
【3分钟学会map函数的使用 python map函数用法】
![3分钟学会map函数的使用 python map函数用法](http://imgsh.easyfang.com/230603/1J3443c6-3.jpg)
文章插图
既然map可以传入两个列表,就会存在两个列表长度不一致的情况,在这种情况下,Python会将较短的列表扩展长度,用None来补齐 。因此就像下面的例子一样,[11, 12, 13]就变成了[11, 12, 13, None] 。相应的函数算法也要进行一些调整 。程序如下:
![3分钟学会map函数的使用 python map函数用法](http://imgsh.easyfang.com/230603/1J3442234-4.jpg)
文章插图
在这个程序中,由于None没有办法进行乘法计算,所以我们使用if x and y来判断一下 。如果有值为None,我们就返回-1 。在本例中,由于第二个列表(list_sample2)的第4个元素,被Python扩展成None,所以无法进行4*None的计算 。所以最后的结果就是-1 。以下是程序的运行结果:
![3分钟学会map函数的使用 python map函数用法](http://imgsh.easyfang.com/230603/1J344HN-5.jpg)
文章插图
通过上面的例子,我们介绍了map的语法使用技术 。map的英文翻译是映射 。因此它的主要作用就是把一个序列按照”某些规则”映射到另一个序列上,而这个某些规则,就是我们”指定的函数” 。下面我们通过一个实际工作中的案例看一下map的应用 。我们假定一个银行的各家分行都向总行报送报表数据 。但是由于是人工上报,所以大家对分行名称的使用都不统一,有的使用城市名称,比如哈尔滨,七台河,有的使用分行名称,比如牡丹江分行,大连分行,这就导致当把所有分行的数据汇总到一起之后,分行名称这列风格不统一 。那么我们就可以通过map函数进行映射,将风格不同的多个名称映射到同一个名称上 。
![3分钟学会map函数的使用 python map函数用法](http://imgsh.easyfang.com/230603/1J3441614-6.jpg)
文章插图
例如,无论你是写成”哈尔滨分行”,还是”哈尔滨”,最终都将映射成”哈尔滨分行” 。七台河,虽然没有写分行,但是我们也映射到”七台河分行”上 。在上图的左侧,各家的分行名称风格不同,但是经过映射后,右侧的风格就保持了统一 。下面我们来看一下源代码:
![3分钟学会map函数的使用 python map函数用法](http://imgsh.easyfang.com/230603/1J3443610-7.jpg)
文章插图
process_branch函数是我们处理分行名称的函数,我们查找一下字符串是否有分行,如果有分行,则说明分行名称的风格是正确的,如果没有”分行”字样,我们就给它加上”分行”两个字,再返回 。
![3分钟学会map函数的使用 python map函数用法](http://imgsh.easyfang.com/230603/1J3442210-8.jpg)
文章插图
通过执行结果,我们看到原来分行上报的各种风格的名称,我们都对应到了我们指定的几个名称上 。比如哈尔滨分行就是哈尔滨分行,不会再有”哈尔滨” 。统一或者说唯一的名称,将为我们后续筛选,汇总数据等操作提供基础的保障 。
以上就是关于map函数的使用介绍,如果有朋友打印过程中出现乱码,一定注意我们使用了import uniout,如果您的机器上没有,可以使用pip安装一下 。
我使用的环境:Windows 7 + Python 2.7.17 + PyCharm Community Edition 2016.1.5
如果大家认为我的文章还可以,真心希望能帮我点一个”关注”,粉丝的数量真的对我很重要,也算是对我努力结果的一个支持,谢谢大家了 。
推荐阅读
- 三分钟包学会win完整升级教程 台式电脑怎么升级系统
- 怎样练柔韧度慢慢的学会劈叉 方法是什么
- 教你3分钟快速注销icloud账户 教大家强制删除icloud账号
- 一文学会计算医保报销比例 住院10000可以报销多少
- 教你学会这3种图片压缩方法 电脑上怎么压缩jpg图片
- 教你3步学会一键强制重启方法 iphonex重启方法教程
- 倒车入库怎么看后视镜 学会这几点轻松倒车
- 3分钟查询iPhone激活日期入口 苹果怎么看激活日期
- 宝宝一岁了适合教宝宝什么呢
- 和平精英卡顿该怎么办帧数调到120帧也没用 你学会了吗?