python中map函数的使用(python map用法)

这篇文章我们将通过几个小例子,介绍一下Python中map函数的使用,开头的几个例子,主要是介绍map的语法使用技术,最后我们会通过一个实际工作中的例子,演示一下map的实际应用案例,使读者有一个更加感性的认识。由于Python2和Python3对map进行了调整,所以本文将以Python2为例进行介绍。

map函数的第1个参数是一个函数,第2个参数是一个序列(sequence)或者是可以迭代的对象,返回值是一个列表(list)。map函数的工作流程就是迭代第2个参数中的每一个元素,将其传递给第1个参数指定的函数中,经过处理后,再把所有的元素组合成一个列表。说起来比较拗口,我们来个基本的小例子,演示一下。

python中map函数的使用(python map用法)

在这个例子中,我们假定计算一下指定列表对应的平方数和立方数。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]。程序的运行结果如下:

python中map函数的使用(python map用法)

上面的程序演示了基本的用法,而map函数是可以传入多个序列或可迭代对象的,当传入两个序列或可迭代对象时,map函数将依次根据两个序列的对应位置的元素,即A列表的第1个元素对应B列表的第1个元素应用指定函数进行处理。下面我们看个实例。

python中map函数的使用(python map用法)

在这个例子中两个列表的元素是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,最后形成列表返回值。

python中map函数的使用(python map用法)

既然map可以传入两个列表,就会存在两个列表长度不一致的情况,在这种情况下,Python会将较短的列表扩展长度,用None来补齐。因此就像下面的例子一样,[11, 12, 13]就变成了[11, 12, 13, None]。相应的函数算法也要进行一些调整。程序如下:

python中map函数的使用(python map用法)

在这个程序中,由于None没有办法进行乘法计算,所以我们使用if x and y来判断一下。如果有值为None,我们就返回-1。在本例中,由于第二个列表(list_sample2)的第4个元素,被Python扩展成None,所以无法进行4*None的计算。所以最后的结果就是-1。以下是程序的运行结果:

python中map函数的使用(python map用法)

通过上面的例子,我们介绍了map的语法使用技术。map的英文翻译是映射。因此它的主要作用就是把一个序列按照"某些规则"映射到另一个序列上,而这个某些规则,就是我们"指定的函数"。下面我们通过一个实际工作中的案例看一下map的应用。我们假定一个银行的各家分行都向总行报送报表数据。但是由于是人工上报,所以大家对分行名称的使用都不统一,有的使用城市名称,比如哈尔滨,七台河,有的使用分行名称,比如牡丹江分行,大连分行,这就导致当把所有分行的数据汇总到一起之后,分行名称这列风格不统一。那么我们就可以通过map函数进行映射,将风格不同的多个名称映射到同一个名称上。

python中map函数的使用(python map用法)

例如,无论你是写成"哈尔滨分行",还是"哈尔滨",最终都将映射成"哈尔滨分行"。七台河,虽然没有写分行,但是我们也映射到"七台河分行"上。在上图的左侧,各家的分行名称风格不同,但是经过映射后,右侧的风格就保持了统一。下面我们来看一下源代码:

python中map函数的使用(python map用法)

process_branch函数是我们处理分行名称的函数,我们查找一下字符串是否有分行,如果有分行,则说明分行名称的风格是正确的,如果没有"分行"字样,我们就给它加上"分行"两个字,再返回。

python中map函数的使用(python map用法)

通过执行结果,我们看到原来分行上报的各种风格的名称,我们都对应到了我们指定的几个名称上。比如哈尔滨分行就是哈尔滨分行,不会再有"哈尔滨"。统一或者说唯一的名称,将为我们后续筛选,汇总数据等操作提供基础的保障。

以上就是关于map函数的使用介绍,如果有朋友打印过程中出现乱码,一定注意我们使用了import uniout,如果您的机器上没有,可以使用pip安装一下。

我使用的环境:Windows 7 + Python 2.7.17 + PyCharm Community Edition 2016.1.5

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论