在本文中,您將了解匿名函數(shù),也稱為lambda函數(shù)。通過示例您將了解它們是什么、它們的語法以及如何使用它們。
在Python中,匿名函數(shù)是沒有定義名稱的函數(shù)。
雖然def在Python中使用關鍵字定義了普通函數(shù),但使用關鍵字定義了匿名函數(shù)lambda。
因此,匿名函數(shù)也稱為lambda函數(shù)。
python中的lambda函數(shù)具有以下語法。
lambda arguments: expression
Lambda函數(shù)可以具有任意數(shù)量的參數(shù),但只能有一個表達式。表達式被求值并返回。Lambda函數(shù)可在需要函數(shù)對象的任何地方使用。
這是一個使輸入值翻倍的lambda函數(shù)示例。
# 程序展示lambda函數(shù)的使用 double = lambda x: x * 2 print(double(5))
輸出結果
10
在上面的程序中,lambda x: x * 2是lambda函數(shù)。這里x是參數(shù),x * 2是求值和返回的表達式。
這個函數(shù)沒有名字。它返回一個函數(shù)對象,該對象被分配給標識符double。我們現(xiàn)在可以把它叫做普通函數(shù)。下面聲明
double = lambda x: x * 2
等同于:
def double(x): return x * 2
當我們臨時需要匿名函數(shù)時,我們使用lambda函數(shù)。
在Python中,我們通常將其用作高階函數(shù)的參數(shù)(該函數(shù)將其他函數(shù)作為arguments)。Lambda函數(shù)可以與filter(),map()等內置函數(shù)一起使用。
在Python函數(shù)中filter()接受一個函數(shù)和一個列表作為參數(shù)。
使用列表中的所有項調用該函數(shù),并返回一個新列表,其中包含函數(shù)計算結果為True的項。
這是使用filter()函數(shù)從列表中僅濾除偶數(shù)的示例。
# 程序從列表中過濾出偶數(shù)項 my_list = [1, 5, 4, 6, 8, 11, 3, 12] new_list = list(filter(lambda x: (x%2 == 0) , my_list)) print(new_list)
輸出結果
[4, 6, 8, 12]
在Python中的map()函數(shù)接受一個函數(shù)和一個列表。
使用列表中的所有項調用該函數(shù),并返回一個新列表,其中包含該函數(shù)為每個項返回的項。
這是使用map()函數(shù)將列表中所有項目翻倍的示例。
# 使用map()將列表中的每個項加倍 my_list = [1, 5, 4, 6, 8, 11, 3, 12] new_list = list(map(lambda x: x * 2 , my_list)) print(new_list)
輸出結果
[2, 10, 8, 12, 16, 22, 6, 24]