用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章