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

學無先后,達者為師

網站首頁 編程語言 正文

Python?lambda函數保姆級使用教程_python

作者:阿黎逸陽 ? 更新時間: 2022-08-21 編程語言

你應該聽說過,應用Python,可以讓你處理一天的重復工作量,縮短到幾分鐘甚至更短。從此解放上班時間,研究更多更有效率的工作方法。進一步提升工作效率,讓工作更出彩。這不是廣告,這是實錘圖片。

一、lambda函數的定義???

lambda函數是Python中常用的內置函數,又稱為匿名函數。和普通函數相比,它只有函數體,省略了def和return,使得結構看起來更精簡。其基本調用語法如下:

lambda [var1 [,var2,…varn]]:expression

[var1 [,var2,…varn]]:形式參數,可以理解為入參,供表達式使用。

expression:函數表達式,其結果為lambda函數的返回值。

二、lambda函數實例

lambda函數和普通函數對比

定義一個lambda函數,將其賦值給一個變量,通過這個變量間接調用該函數。

fun_1 = lambda a,b: a*2+b*3
fun_1(1,2)

得到結果:

8

其中a,b是形式參數,即入參,供表達式a2+b3使用。

定義一個普通函數,語句如下:

def fun1(a,b):
    return a*2+b*3
fun1(1, 2)

得到結果:

8

可以發現應用lambda函數和普通函數的區別是少了def和return語句,且lambda函數直接寫在了一行,顯得更加精簡。不過在這里還沒有體現出匿名的屬性。

求一個一元二次方程

在上初中的時候,我們常常可以看到這樣一個題目:F(x)=ax^2+bx+c,求當a=2,b=3,c=4時,F(-1)、F(2)、F(5)的值。

方法一:應用lambda函數求解

F_x = lambda x:2*x**2+3*x+4
print(F_x(-1))
print(F_x(2))
print(F_x(5))

得到結果:

3
18
69

方法二:應用普通函數求解

def F_x(x):
    return 2*x**2+3*x+4
print(F_x(-1))
print(F_x(2))
print(F_x(5))

得到結果:

3
18
69

可以發現應用lambda函數和普通函數的求解結果是一樣的。

和高階函數filter配合使用

高階函數filter在后續文章中會詳細說明,它主要用來對列表進行過濾,挑選出列表中符合特定條件的值。比如想挑選出數列中3的倍數,語句如下:

cs_data = list([2, 8, 11, 12, 15, 6, 1, 7])
list(filter(lambda x:x%3==0, cs_data))

得到結果:

[12, 15, 6]

用常識也可以看出,最后的結果是挑選出了數列cs_data中3的倍數。和高階函數配合使用時,lambda函數的優點就進一步凸顯出來了。這時不需要提前定義一個普通函數,直接在高階函數內部將lambda函數的結果作為參數傳遞給高階函數即可,也真正做到了匿名。

和sorted函數配合使用

如果我們想對一個數列按數值的絕對值進行排列,可以應用sorted函數和lambda函數配合實現,語句如下:

my_list = [3, 5, -2, 10, -6, 8]
sorted(my_list, key=lambda x:abs(x))

得到結果:

[-2, 3, 5, -6, 8, 10]

可以發現得到的結果是按數值的絕對值排序后的數列。

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

欄目分類
最近更新