Python?lambda函數(shù)保姆級(jí)使用教程
你應(yīng)該聽說過,應(yīng)用Python,可以讓你處理一天的重復(fù)工作量,縮短到幾分鐘甚至更短。從此解放上班時(shí)間,研究更多更有效率的工作方法。進(jìn)一步提升工作效率,讓工作更出彩。這不是廣告,這是實(shí)錘圖片。
一、lambda函數(shù)的定義
lambda函數(shù)是Python中常用的內(nèi)置函數(shù),又稱為匿名函數(shù)。和普通函數(shù)相比,它只有函數(shù)體,省略了def和return,使得結(jié)構(gòu)看起來更精簡。其基本調(diào)用語法如下:
lambda [var1 [,var2,…varn]]:expression
[var1 [,var2,…varn]]:形式參數(shù),可以理解為入?yún)?,供表達(dá)式使用。
expression:函數(shù)表達(dá)式,其結(jié)果為lambda函數(shù)的返回值。
二、lambda函數(shù)實(shí)例
lambda函數(shù)和普通函數(shù)對(duì)比
定義一個(gè)lambda函數(shù),將其賦值給一個(gè)變量,通過這個(gè)變量間接調(diào)用該函數(shù)。
fun_1 = lambda a,b: a*2+b*3 fun_1(1,2)
得到結(jié)果:
8
其中a,b是形式參數(shù),即入?yún)ⅲ┍磉_(dá)式a2+b3使用。
定義一個(gè)普通函數(shù),語句如下:
def fun1(a,b):
return a*2+b*3
fun1(1, 2)
得到結(jié)果:
8
可以發(fā)現(xiàn)應(yīng)用lambda函數(shù)和普通函數(shù)的區(qū)別是少了def和return語句,且lambda函數(shù)直接寫在了一行,顯得更加精簡。不過在這里還沒有體現(xiàn)出匿名的屬性。
求一個(gè)一元二次方程
在上初中的時(shí)候,我們常??梢钥吹竭@樣一個(gè)題目:F(x)=ax^2+bx+c,求當(dāng)a=2,b=3,c=4時(shí),F(xiàn)(-1)、F(2)、F(5)的值。
方法一:應(yīng)用lambda函數(shù)求解
F_x = lambda x:2*x**2+3*x+4 print(F_x(-1)) print(F_x(2)) print(F_x(5))
得到結(jié)果:
3
18
69
方法二:應(yīng)用普通函數(shù)求解
def F_x(x):
return 2*x**2+3*x+4
print(F_x(-1))
print(F_x(2))
print(F_x(5))
得到結(jié)果:
3
18
69
可以發(fā)現(xiàn)應(yīng)用lambda函數(shù)和普通函數(shù)的求解結(jié)果是一樣的。
和高階函數(shù)filter配合使用
高階函數(shù)filter在后續(xù)文章中會(huì)詳細(xì)說明,它主要用來對(duì)列表進(jìn)行過濾,挑選出列表中符合特定條件的值。比如想挑選出數(shù)列中3的倍數(shù),語句如下:
cs_data = list([2, 8, 11, 12, 15, 6, 1, 7]) list(filter(lambda x:x%3==0, cs_data))
得到結(jié)果:
[12, 15, 6]
用常識(shí)也可以看出,最后的結(jié)果是挑選出了數(shù)列cs_data中3的倍數(shù)。和高階函數(shù)配合使用時(shí),lambda函數(shù)的優(yōu)點(diǎn)就進(jìn)一步凸顯出來了。這時(shí)不需要提前定義一個(gè)普通函數(shù),直接在高階函數(shù)內(nèi)部將lambda函數(shù)的結(jié)果作為參數(shù)傳遞給高階函數(shù)即可,也真正做到了匿名。
和sorted函數(shù)配合使用
如果我們想對(duì)一個(gè)數(shù)列按數(shù)值的絕對(duì)值進(jìn)行排列,可以應(yīng)用sorted函數(shù)和lambda函數(shù)配合實(shí)現(xiàn),語句如下:
my_list = [3, 5, -2, 10, -6, 8] sorted(my_list, key=lambda x:abs(x))
得到結(jié)果:
[-2, 3, 5, -6, 8, 10]
可以發(fā)現(xiàn)得到的結(jié)果是按數(shù)值的絕對(duì)值排序后的數(shù)列。
到此這篇關(guān)于Python lambda函數(shù)保姆級(jí)使用教程的文章就介紹到這了,更多相關(guān)Python lambda函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用NumPy和pandas對(duì)CSV文件進(jìn)行寫操作的實(shí)例
今天小編就為大家分享一篇使用NumPy和pandas對(duì)CSV文件進(jìn)行寫操作的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06
ERLANG和PYTHON互通實(shí)現(xiàn)過程詳解
這篇文章主要介紹了ERLANG和PYTHON互通過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
基于python實(shí)現(xiàn)FTP文件上傳與下載操作(ftp&sftp協(xié)議)
這篇文章主要介紹了基于python實(shí)現(xiàn)FTP文件上傳與下載操作(ftp&sftp協(xié)議),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
Python range、enumerate和zip函數(shù)用法詳解
這篇文章主要介紹了Python range、enumerate和zip函數(shù)用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09

