python-lambda用法

小喜_ww發表於2018-04-18

前言:

lambda函式也叫匿名函式,即,函式沒有具體的名稱。


一、基礎

lambda語句構建的其實是一個函式物件。匿名函式有個限制,就是隻能有一個表示式,不用寫return,返回值就是該表示式的結果。

lambda(a,b: a+b)
#關鍵字lambda表示匿名函式,冒號前是引數,可以有多個,用逗號隔開,冒號右邊的返回值。

lambda優點:
1、使用Python寫一些執行指令碼時,使用lambda可以省去定義函式的過程,讓程式碼更加精簡。
2、對於一些抽象的,不會別的地方再複用的函式,有時候給函式起個名字也是個難題,使用lambda不需要考慮命名的問題。
3、使用lambda在某些時候讓程式碼更容易理解。

舉一個簡單的例子:
def f(x):
  return x**2
  print f(4)

Python中使用lambda的話,寫成這樣
g = lambda x : x**2
print g(4)

 


二、進階-內建函式

1、map()
遍歷序列,對序列中每個元素進行操作,最終獲取新的序列。

li = [11, 22, 33]
sl = [1, 2, 3]
new_list = map(lambda a, b: a + b, li, sl)
print(list(new_list))
結果輸出為:
>>>[12,24,36]

2、reduce()
對於序列內所有元素進行累計操作

from functools import reduce

li = [11,22,33]
result = reduce(lambda a,b:a+b,li)
# reduce的第一個引數,函式必須要有兩個引數
# reduce的第二個引數,要迴圈的序列
# reduce的第三個引數,初始值
print(result)
輸出結果:
>>>66

3、filter()
對於序列中的元素進行篩選,最終獲取符合條件的序列

li = [11,22,33]
new_list = filter(lambda a:a>22,li)
print(list(new_list))
#filter第一個引數為空,將獲取原來序列
輸出結果:
>>>[33]

 


以上~

作者:擱淺

出處: http://www.cnblogs.com/xiaoxi-3-/

如果對您有幫助,請關注我的同名簡書:https://www.jianshu.com/u/da1677475c27

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。