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

前言

进阶部分连载继续~

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

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

05cafd2a31243191ef1abd91106b2ccb.png

前文传送门:

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

今天来讲讲map操作!

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

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

小明:。。。

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

没错 , 就是映射!

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

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

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

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

f19a61632ed5aa62dcb011ef1229554e.png

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

70825d8a86654faeba52edb86f0452ef.png

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

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

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

c85a6fc50dbc9331faaa6c241e57865c.png

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

e27ed5df3e763e3055bdf2c9243d8dce.png

好,我们还是看看map吧:

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

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

比如批量生产肥皂:

6de80dc57b376f047750af701ef770e4.png

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

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

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

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

map(函数,序列)

8aa096d71d7fb32e51201be024afea0b.png

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

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

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

c7dd448775466d8e5d549822abe52e7c.png

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

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

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

或者更具体化:

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

095f8deacdc333097a1901ccee178ba6.png

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

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

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

其实可以这样:

aa70d1aae1c9bfe8c989fda79111c5f6.png

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

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

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

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

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

今天作业:

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

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

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

下课

人生苦短,我选Python

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值