Python进阶系列连载(9)——Python内置高阶函数map(上)

浏览: 3295

前言

进阶部分连载继续~

如果还没看过我的入门连载部分,先看:

https://ask.hellobi.com/blog/wangdawei/10288


当然,小编的免费入门课程已经有咯,看过连载的朋友可以看看视频再快速梳理一遍~

视频传送门:https://edu.hellobi.com/course/234

图片.png

前文传送门:

Python进阶系列连载(1)——那些容易被忽略的问题(上)

Python进阶系列连载(2)——那些容易被忽略的问题(中)

Python进阶系列连载(3)——那些容易被忽略的问题(下)

Python进阶系列连载(4)——迭代器

Python进阶系列连载(5)——生成器(上)

Python进阶系列连载(6)——生成器(中)

Python进阶系列连载(7)——生成器(下)

Python进阶系列连载(8)——闭包(上)


小编最近在忙着写论文和找实习(可惜没人看上我呢,哭唧唧,所以抱歉更新慢了)


今天来讲讲map操作!


小明:老湿,map嘛,地图的意思,我很了解的!


小红:小明,你是小时候睡觉时候地图画多了吧!


小明:。。。


咳咳,我们今天要讲的map在这里不是地图的含义!而是 ying she 的意思


没错 , 就是映射!


其实我们很早就学过映射了!


比如初中刚开始学函数的时候 y = f(x) ,一个x对应一个y 就是一种映射


同学们,如果我要实现对一个序列(例如列表list)的每个元素求他们的平方,结果生成一个新的序列,怎么操作呢?


小明:老湿,我觉得可以这样!


图片.png


小红:老湿,其实可以使用我们之前学过的更Pythonic的方法


图片.png


嗯,不错,小红用了列表生成式!


今天我们就以这个为例引蛇出洞,蛇 = map


前段时间看到一个很有意思的问题:

图片.png


哈哈哈,因为Python就是 蛇的意思:

图片.png


好,我们还是看看map吧:


会根据提供的函数对指定序列做映射


这是什么意思呢?   简而言之  就是批量生产!


比如批量生产肥皂:图片.png


为什么是批量呢?这是和之前的y = f(x) 区别开的


一般我们一次传入一个x,计算出一个y 

现在我们一次传入一个序列(例如一个list或者一堆肥皂原材料),一次输出另一个序列(这个序列就是一块块肥皂啦~)


我们看看map的形式结构吧:


map(函数,序列)


图片.png


注意:我们在map之后还套上了一层list操作呢~(因为map直接返回的是迭代器!之前讲过哦~)


小明:老师,感觉这个也并不够Pythonic啊,能不能简化呢?


小红:我觉得是不是可以加个匿名函数呢?


图片.png


嗯,小红很好的解决了这个问题!


看到这里,有没有一种感觉,就是在打游戏时候,使用map像是群体技能,表达如下:


map(群体技能,释放对象)


或者更具体化:


map(烈焰风暴,【对象1,对象2,...,对象n】)


图片.png


小明:那这个map有啥特别的骚操作么?


小明啊,如果让你对两个列表对应位置元素相加,生成一个新的列表,最简单你会怎么写呢?


小明:这个好像不是很简单就能写出来吧!


其实可以这样:

图片.png


甚至更多list对应相加都可以呢,甚至对应相乘~


小明:这个好吉尔酷炫啊!老湿,如果这里不是数值型,而是字符串列表之类呢?比如我想给一个列表中的字符串去掉空格,可以操作么?


嗯,这个问题不错,留给你下课想想,我们下节课说一下!


小红:老湿,我最近在做一个网站,让用户输入验证码的时候,想不区分大小写字母,这样方便用户输入,有什么办法批量将他们输入的列表中的字母验证码都转化为大写么?


嗯,这个问题不错,留给你下课想想,我们下节课说一下! x 2


今天作业:

1. 如何用一两行代码搞定1~100求和(限制使用匿名函数lambda,这是前段时间小编遇到的一个面试题哦~之后公布答案!)

2. 敲一遍代码,感受一下map的黑魔法

自己不敲代码永远学不会写代码

下课

人生苦短,我选Python

未完待续,连载中......

欢迎评论指出文中错误和提问~~~


下一篇链接:Python进阶系列连载(10)——Python内置高阶函数map(下)

推荐 3
本文由 ID王大伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

6 个评论

答案?
老师,闭包的下半生呢~~~
等段时间更新哦 上次写漏了
后面的文章公布了答案哦
老师,我有两个问题。pingfang函数那里x好像没定义。还有就是,为什么map里调用pingfang函数不能加参数啊?加了就报错
第二个问题懂了,因为map函数是对所有序列进行函数映射,所以不能有参数。

要回复文章请先登录注册