**:
lambda表示式,通常是在需要乙個函式,但是又不想費神去命名乙個函式的場合下使用,也就是指匿名函式。
lambda所表示的匿名函式的內容應該是很簡單的,如果複雜的話,乾脆就重新定義乙個函式了,使用lambda就有點過於執拗了。
lambda就是用來定義乙個匿名函式的,如果還要給他繫結乙個名字的話,就會顯得有點畫蛇添足,通常是直接使用lambda函式。如下所示:
add = lambda x, y : x+y
add(1,2) # 結果為3
那麼到底要如何使用lambda表示式呢?
1、應用在函式式程式設計中
python提供了很多函式式程式設計的特性,如:map、reduce、filter、sorted等這些函式都支援函式作為引數,lambda函式就可以應用在函式式程式設計中。如下:
# 需求:將列表中的元素按照絕對值大小進行公升序排列
list1 = [3,5,-4,-1,0,-2,-6]
sorted(list1, key=lambda x: abs(x))
當然,也可以如下:
list1 = [3,5,-4,-1,0,-2,-6]
def get_abs(x):
return abs(x)
sorted(list1,key=get_abs)
只不過這種方式的**看起來不夠pythonic
2、應用在閉包中
def get_y(a,b):
return lambda x:ax+b
y1 = get_y(1,1)
y1(1) # 結果為2
當然,也可以用常規函式實現閉包,如下:
def get_y(a,b):
def func(x):
return ax+b
return func
y1 = get_y(1,1)
y1(1) # 結果為2
只不過這種方式顯得有點囉嗦。
那麼是不是任何情況下lambda函式都要比常規函式更清晰明了呢?
肯定不是。
python之禪中有這麼一句話:explicit is better than implicit(明了勝於晦澀),就是說那種方式更清晰就用哪一種方式,不要盲目的都使用lambda表示式。
Python中的lambda形式
python中的lambda語句被用來建立新的函式物件,並且在執行時返回它們。注意 1 下面的例子使用make repeater函式在執行時,通過lambda語句來建立新的函式物件,並且返回它。在這裡,lambda需要乙個引數,後面僅跟單個表示式作為函式體,而表示式的值被這個新建的函式返回。2 注意...
python中的lambda函式
lambda函式也叫匿名函式,即,函式沒有具體的名稱。先來看乙個最簡單例子 deff x returnx 2printf 4 python中使用lambda的話,寫成這樣 g lambdax x 2printg 4 lambda表示式在很多程式語言都有對應的實現。比如c varg x x 2cons...
python中的lambda函式
今天學習python裡面的高階函式map f list 的時候看見這樣一行 print map lambda x x 3,range 6 我已經知道 map函式的首個引數是乙個函式,後面的乙個或者多個list or tuple作為第乙個引數 也就是那個函式 的引數,以map的方式遍歷執行,並返回乙個...