前言
进阶部分连载继续~
如果还没看过我的入门连载部分,先看:
当然,小编的免费入门课程已经有咯,看过连载的朋友可以看看视频再快速梳理一遍~
前文传送门:
小编最近在忙着写论文和找实习(可惜没人看上我呢,哭唧唧,所以抱歉更新慢了)
今天来讲讲map操作!
小明:老湿,map嘛,地图的意思,我很了解的!
小红:小明,你是小时候睡觉时候地图画多了吧!
小明:。。。
咳咳,我们今天要讲的map在这里不是地图的含义!而是 ying she的意思
没错 , 就是映射!
其实我们很早就学过映射了!
比如初中刚开始学函数的时候 y = f(x) ,一个x对应一个y 就是一种映射
同学们,如果我要实现对一个序列(例如列表list)的每个元素求他们的平方,结果生成一个新的序列,怎么操作呢?
小明:老湿,我觉得可以这样!
小红:老湿,其实可以使用我们之前学过的更Pythonic的方法
嗯,不错,小红用了列表生成式!
今天我们就以这个为例引蛇出洞,蛇 = map
前段时间看到一个很有意思的问题:
哈哈哈,因为Python就是 蛇的意思:
好,我们还是看看map吧:
会根据提供的函数对指定序列做映射
这是什么意思呢? 简而言之 就是批量生产!
比如批量生产肥皂:
为什么是批量呢?这是和之前的y = f(x) 区别开的
一般我们一次传入一个x,计算出一个y
现在我们一次传入一个序列(例如一个list或者一堆肥皂原材料),一次输出另一个序列(这个序列就是一块块肥皂啦~)
我们看看map的形式结构吧:
map(函数,序列)
注意:我们在map之后还套上了一层list操作呢~(因为map直接返回的是迭代器!之前讲过哦~)
小明:老师,感觉这个也并不够Pythonic啊,能不能简化呢?
小红:我觉得是不是可以加个匿名函数呢?
嗯,小红很好的解决了这个问题!
看到这里,有没有一种感觉,就是在打游戏时候,使用map像是群体技能,表达如下:
map(群体技能,释放对象)
或者更具体化:
map(烈焰风暴,【对象1,对象2,...,对象n】)
小明:那这个map有啥特别的骚操作么?
小明啊,如果让你对两个列表对应位置元素相加,生成一个新的列表,最简单你会怎么写呢?
小明:这个好像不是很简单就能写出来吧!
其实可以这样:
甚至更多list对应相加都可以呢,甚至对应相乘~
小明:这个好吉尔酷炫啊!老湿,如果这里不是数值型,而是字符串列表之类呢?比如我想给一个列表中的字符串去掉空格,可以操作么?
嗯,这个问题不错,留给你下课想想,我们下节课说一下!
小红:老湿,我最近在做一个网站,让用户输入验证码的时候,想不区分大小写字母,这样方便用户输入,有什么办法批量将他们输入的列表中的字母验证码都转化为大写么?
嗯,这个问题不错,留给你下课想想,我们下节课说一下! x 2
今天作业:
1. 如何用一两行代码搞定1~100求和(限制使用匿名函数lambda,这是前段时间小编遇到的一个面试题哦~之后公布答案!)
2. 敲一遍代码,感受一下map的黑魔法
自己不敲代码永远学不会写代码
下课
人生苦短,我选Python
未完待续,连载中......
欢迎评论指出文中错误和提问~~~