用Python的lambda表达式给小姐姐表白的故事

前言:高三的时候经常听老师说高中谈什么恋爱,到了大学再谈恋爱,大学的女生还漂亮!听了高中老师的话我好好学习,好不容易考上了大学,发现高中老师的嘴就是骗人的鬼。漂亮小姐姐确实不少,但是大多数竟然都有男朋友。再加上我家里穷、长得还丑哪里来的自信去找朋友啊!混到大二了依旧是单身狗一个。
大二开学后不久一天中午睡过头了,没有人叫我(舍友都有女朋友了)看看时间距上课只有10分钟不到了,而我还在宿舍。于是,跳下床、带上课本(脸我也不洗了,洗了也没人看)就飞快的跑向教学楼,结果在一个拐角处由于刹不住车,一不小心撞到了一位穿裙子的漂亮小姐姐。(那是我上大学第一次离一个女生那么近的距离)那一刻我脸红彤彤的很是害羞,慌忙的给小姐姐连声说对不起。然后就奔向教室了,当我到教室坐下来以后,心里既然莫名奇妙的开心——既然能那么近距离接触到这么漂亮的小姐姐,而且还听到了小姐姐那声甜甜的“没事没事”。我承认我心动了。心里暗自发誓如果小姐姐单身的话一定要追她。
Alt

什么是lambda表达式

看一个例子:

先定义一个普通的函数

def ds(x)
	return 2*x+1

调用该函数时:
Alt
如果我们使用lambda表达式来实现该函数的功能:

在教室里一整节课都在幻想有了小姐姐这样的女朋友,想着竟然在座位傻笑。一节课讲了啥我是浑然不知。下课后回到宿舍,我请教了我们宿舍的舍长(情圣)开学到现在已经约过三个不同的女生出去玩。我告诉了舍长我今天的事——我已经对那个小姐姐心动了Alt

但是舍长说心动不如行动这样空想你是追不到的,然后又说了一连串要自信啊鼓励我的话。听了舍长一番话后我勇敢的迈出了第一步一步,去我们学校的表白墙来海底捞这个小姐姐。没有想到的是在晚上的时候小姐姐既然出奇的加了我的联系方式。我简直开心到爆炸,就这样我们通过QQ互相认识了,然后简单的聊了聊(感觉在尬聊)。

我已经通过lambda表达式定义了一个匿名函数(默默喜欢),但是如何使用匿名函数呢?我们可以给匿名函数取一个名字(加联系方式,小姐姐认识了我)
Alt

在加好友认识以后,经过多方打听发现这个小姐姐既然没有男朋友(说明我有机会啦)再向情圣舍长索取一些技巧。他告诉我没有那一个女生不喜欢喝奶茶,你可以找机会给她买杯奶茶道歉,这样你们就又能见面了。我听取了情圣舍长的建议发消息给小姐姐说这事(一开始说学校奶茶店出新品了,然后逐渐向请奶茶上引),完美的衔接让小姐姐爽快的答应了(果真女生对奶茶没有抵抗力)。通过奶茶我们俩再次见面(发现她还辣么漂亮),伴随请奶茶以后聊得话题也就多了。一天聊天中我就抱怨我们宿舍就我一个单身狗,每天一个人独来独往。结果小姐姐说她也是(哈哈哈,这不就有机会约自习、约跑步了吗?)嗯不错我确实成功的和小姐姐一起上自习一起跑步了。直到有一天在自习室我问了她一个问题:以下代码输出的结果是什么?为什么么啊?

g=lambda x:x*2+1
print(g(260))

她看了看代码说这么简单的题目算一下就出来了,结果是260乘以2再加1等于。。。她说你套路我(脸已经红了)用手轻轻的打了我一下,我趁机拉住她的小手拉近距离说这就是我想对你说的话。(害羞,心跳加速!!!)有些期待结果,你们希望小姐姐同意吗?

调用时输出结果:521
通过以上例子相信大家对lambda表达式有了简单的了解。

lambda表达式的定义

根据刚才举的例子可以看出lambda表达式的基本语法格式为:

lambda '参数' : 表达式

使用注意:

  • lambda 表达式必须使用 lambda 关键字定义
  • 在 lambda 关键字之后、冒号左边为参数列表,可不带参数,也可有多个参数。若有多个参数,则参数间用逗号隔开,冒号右边为 lambda 表达式的返回值。
  • lambda 表达式的本质是匿名的、单行函数体的函数,故lambda 表达式可以写成函数的形式。例如,对于如下 lambda 表达式:
    lambda x,y:x+y改写为函数形式为:
def sun(x,y)
	return x+y
  • lambda只是一个表达式,函数体比def简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。

lambda表达式的作用

1.Python写一些脚本时,使用lambda可以省下定义函数的时间,可以使代码更加精简。
2.使用lambda可以不需要考虑函数命名的问题
3.简化代码的可读性

两个bif

filter(过滤器)

该函数有两个参数:

参数1 参数2
一个函数或者None 可迭代的数据

当参数1为None时

Alt
可以看出过滤器过滤掉任何非Ture的值

当参数1为函数时

因此我们可以通过过滤器来完成一个过滤奇数的过滤器:
Alt
那么我们可以结合lambda来简化一下代码:
Alt
只用了一行代码就实现了刚才的代码的功能。用lambda表达式作为filter的第一个参数。

map(映射)

该函数有两个参数:

参数1 参数2
函数 可迭代的序列

该bif的功能是将序列的每一个元素作为函数的参数进行加工,直到可迭代序列的每一个元素都加工完毕,然后返回进行加工后的元素构成的新序列
Alt
以上的代码就是将0~9作为匿名函数的参数进行操作(+2)操作,然后得到返回后的序列。

Alt

发布了39 篇原创文章 · 获赞 156 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_44895651/article/details/105063852
今日推荐