详解Python map函数及Python map()函数的用法


Posted in Python onNovember 16, 2017

python map函数

map()函数
map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
例如,对于list [1, 2, 3, 4, 5, 6, 7, 8, 9]
如果希望把list的每个元素都作平方,就可以用map()函数:
因此,我们只需要传入函数f(x)=x*x,就可以利用map()函数完成这个计算:
def f(x):
 return x*x
print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
输出结果:
[1, 4, 9, 10, 25, 36, 49, 64, 81]
注意:map()函数不改变原有的 list,而是返回一个新的 list。
利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。
由于list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的 list,事实上它可以处理包含任意类型的 list,只要传入的函数f可以处理这种数据类型。
任务
假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list:
输入:['adam', 'LISA', 'barT']
输出:['Adam', 'Lisa', 'Bart']
def format_name(s):
 s1=s[0:1].upper()+s[1:].lower();
 return s1;
print map(format_name, ['adam', 'LISA', 'barT'])

map()函数是python内置的高阶函数,对传入的list的每一个元素进行映射,返回一个新的映射之后的list

Python map()函数的用法

Python函数式编程之map()

Python中map()、filter()、reduce()这三个都是应用于序列的内置函数。

格式:

map(func, seq1[, seq2,…])

第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。

Python函数编程中的map()函数是将func作用于seq中的每一个元素,并将所有的调用的结果作为一个list返回。如果func为None,作用同zip()。

1、当seq只有一个时,将函数func作用于这个seq的每个元素上,并得到一个新的seq。

让我们来看一下只有一个seq的时候,map()函数是如何工作的。

详解Python map函数及Python map()函数的用法 

从上图可以看出,函数func函数会作用于seq中的每个元素,得到func(seq[n])组成的列表。下面举得例子来帮助我们更好的理解这个工作过程。

#使用lambda
>>> print map(lambda x: x % 2, range(7))
[0, 1, 0, 1, 0, 1, 0]

详解Python map函数及Python map()函数的用法

#使用列表解析
>>> print [x % 2 for x in range(7)]
[0, 1, 0, 1, 0, 1, 0]

详解Python map函数及Python map()函数的用法 

一个seq时,可以使用filter()函数代替,那什么情况不能代替呢?

2、当seq多于一个时,map可以并行(注意是并行)地对每个seq执行如下图所示的过程:

详解Python map函数及Python map()函数的用法 

从图可以看出,每个seq的同一位置的元素同时传入一个多元的func函数之后,得到一个返回值,并将这个返回值存放在一个列表中。下面我们看一个有多个seq的例子:

>>> print map(lambda x , y : x ** y, [2,4,6],[3,2,1])
[8, 16, 6]

详解Python map函数及Python map()函数的用法 

如果上面我们不使用map函数,就只能使用for循环,依次对每个位置的元素调用该函数去执行。还可以使返回值是一个元组。如:

>>> print map(lambda x , y : (x ** y, x + y), [2,4,6],[3,2,1])
[(8, 5), (16, 6), (6, 7)]

详解Python map函数及Python map()函数的用法 

当func函数时None时,这就同zip()函数了,并且zip()开始取代这个了,目的是将多个列表相同位置的元素归并到一个元组。如:

>>> print map(None, [2,4,6],[3,2,1])
[(2, 3), (4, 2), (6, 1)]

需要注意的是:

map无法处理seq长度不一致、对应位置操作数类型不一致的情况,这两种情况都会报类型错误。如下图:

详解Python map函数及Python map()函数的用法

3、使用map()函数可以实现将其他类型的数转换成list,但是这种转换也是有类型限制的,具体什么类型限制,在以后的学习中慢慢摸索吧。这里给出几个能转换的例子:

***将元组转换成list***
>>> map(int, (1,2,3))
[1, 2, 3]
***将字符串转换成list***
>>> map(int, '1234')
[1, 2, 3, 4]
***提取字典的key,并将结果存放在一个list中***
>>> map(int, {1:2,2:3,3:4})
[1, 2, 3]
***字符串转换成元组,并将结果以列表的形式返回***
>>> map(tuple, 'agdf')
[('a',), ('g',), ('d',), ('f',)]
#将小写转成大写
def u_to_l (s):
 return s.upper()
print map(u_to_l,'asdfd')

总结

以上所述是小编给大家介绍的详解Python map函数及Python map()函数的用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python操作日期和时间的方法
Mar 11 Python
使用Python判断IP地址合法性的方法实例
Mar 13 Python
从零学Python之入门(二)基本数据类型
May 25 Python
python中os操作文件及文件路径实例汇总
Jan 15 Python
深入Python解释器理解Python中的字节码
Apr 01 Python
Python3.2中的字符串函数学习总结
Apr 23 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
Python使用PyCrypto实现AES加密功能示例
May 22 Python
pycharm创建一个python包方法图解
Apr 10 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
Python3 webservice接口测试代码详解
Jun 23 Python
python 经纬度求两点距离、三点面积操作
Jun 03 Python
python中lambda()的用法
Nov 16 #Python
Python reduce()函数的用法小结
Nov 15 #Python
python简单实例训练(21~30)
Nov 15 #Python
python下10个简单实例代码
Nov 15 #Python
python获取多线程及子线程的返回值
Nov 15 #Python
python使用threading获取线程函数返回值的实现方法
Nov 15 #Python
python enumerate函数的使用方法总结
Nov 15 #Python
You might like
据说是雅虎的一份PHP面试题附答案
2009/01/07 PHP
PHP日期时间函数的高级应用技巧
2009/05/16 PHP
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
Ext面向对象开发实践(续)
2008/11/18 Javascript
js继承 Base类的源码解析
2008/12/30 Javascript
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
jQuery前台数据获取实现代码
2011/03/16 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
2012/10/12 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
jQuery实现的模拟弹出窗口功能示例
2016/11/24 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
2017/07/21 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
[33:19]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第一场 11.26
2020/11/30 DOTA
python GUI实例学习
2017/11/21 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
python识别文字(基于tesseract)代码实例
2019/08/24 Python
python3操作注册表的方法(Url protocol)
2020/02/05 Python
python实现移动木板小游戏
2020/10/09 Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
2021/02/20 Python
百度JavaScript笔试题
2015/01/15 面试题
见习期自我鉴定
2014/01/31 职场文书
上课看小说检讨书
2014/02/22 职场文书
2014年两会学习心得范例
2014/03/17 职场文书
学生自我评语大全
2014/04/18 职场文书
技校毕业生自荐信
2014/06/03 职场文书
学校党员对照检查材料
2014/08/28 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
2016七一建党节慰问信
2015/11/30 职场文书
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫