Lambda 表達式

原文連接:我的個人博客

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章