什么是lambda函數?有什么好處?
lambda 函數是一個可以接收任意多個參數(包括可選參數)並且返回單個表達式值的匿名函數
好處:
1、lambda 函數比較輕便,即用即刪除,很適合需要完成一項功能,但是此功能只在此一處使用,
連名字都很隨意的情況下;
2、匿名函數,一般用來給 filter, map 這樣的函數式編程服務;
3、作為回調函數,傳遞給某些應用,比如消息處理
一、lambda函數的語法
lambda語句中,冒號前是參數,可以有0個或多個,用逗號隔開,冒號右邊是返回值。lambda語句構建的其實是一個函數對象。
1》無參數:
f = lambda:'Hello python lambda' f() #'Hello python lambda'
2》有參數,無默認值
f = lambda x,y: x*y f(6,7) #42
3》有參數,有默認值
f = lambda x=5, y=8: x*y f() #40
f(5,6) #30
4》和map, reduce, filter連用
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27] print filter(lambda x: x % 3 == 0, foo)#python 2.x
list( filter(lambda x: x % 3 == 0, foo) )#python 3.x #[18, 9, 24, 12, 27]
print map(lambda x: x * 2 + 10, foo)#python 2.x
list( map(lambda x: x * 2 + 10, foo) )#python 3.x #[14, 46, 28, 54, 44, 58, 26, 34, 64]
from functools import reduce#python 3.x need import reduce
reduce(lambda x, y: x + y, foo) #139