日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

Python?lambda函數(shù)保姆級(jí)使用教程_python

作者:阿黎逸陽(yáng) ? 更新時(shí)間: 2022-08-21 編程語(yǔ)言

你應(yīng)該聽(tīng)說(shuō)過(guò),應(yīng)用Python,可以讓你處理一天的重復(fù)工作量,縮短到幾分鐘甚至更短。從此解放上班時(shí)間,研究更多更有效率的工作方法。進(jìn)一步提升工作效率,讓工作更出彩。這不是廣告,這是實(shí)錘圖片。

一、lambda函數(shù)的定義???

lambda函數(shù)是Python中常用的內(nèi)置函數(shù),又稱為匿名函數(shù)。和普通函數(shù)相比,它只有函數(shù)體,省略了def和return,使得結(jié)構(gòu)看起來(lái)更精簡(jiǎn)。其基本調(diào)用語(yǔ)法如下:

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è)變量,通過(guò)這個(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ù),語(yǔ)句如下:

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語(yǔ)句,且lambda函數(shù)直接寫在了一行,顯得更加精簡(jiǎn)。不過(guò)在這里還沒(méi)有體現(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ì)說(shuō)明,它主要用來(lái)對(duì)列表進(jìn)行過(guò)濾,挑選出列表中符合特定條件的值。比如想挑選出數(shù)列中3的倍數(shù),語(yǔ)句如下:

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)一步凸顯出來(lái)了。這時(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),語(yǔ)句如下:

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ù)列。

原文鏈接:https://blog.csdn.net/qq_32532663/article/details/125247034

欄目分類
最近更新