原文連接:我的個人博客
Lambda 表達式(lambda expression)是一個匿名函數,Lambda表達式基於數學中的λ演算得名,直接對應於其中的lambda抽象(lambda abstraction),是一個匿名函數,即沒有函數名的函數。
語法
簡答的說,就是用簡單的語句,來代替一個函數。這樣就不用取def一個函數了。Lambda表達式是Python中一類特殊的定義函數的形式,使用它可以定義一個匿名函數。與其它語言不同,Python的Lambda表達式的函數體只能有單獨的一條語句,也就是返回值表達式語句。其語法如下:
lambda 形參列表 : 函數返回值表達式語句
簡單的lambda
fun = lambda x:x+1
也就相當於
def fun(x):
return x+1
同if else使用
#if 條件爲真的時候返回if前面內容,否則返回0
exp1= lambda x:x+1 if 2==1 else 0
與map、filter等函數使用
map()
作用:會根據提供的函數對指定序列做映射。
語法:map(function, iterable, …)
參數:
function — 函數
iterable — 一個或多個序列
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函數
[1, 4, 9, 16, 25]
filter()
作用:函數用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。
語法:filter(function, iterable)
參數:
function — 判斷函數。
iterable — 可迭代對象。
newlist = list(filter(lambda n:n%2==1,[1,2,3,4,5,6,7,8,9,10]))
print(newlist)
# [1, 3, 5, 7, 9]
reduce()
作用:函數會對參數序列中元素進行累積。
語法:reduce(function, iterable[, initializer])
參數:
function — 函數,有兩個參數
iterable — 可迭代對象
initializer — 可選,初始參數
>>> reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函數
15