Lambda表達式
匿名函數
-lamdba函數是一種快速定義單行的最小函數,是從Lisp借用來的,可以用在任何需要函數的地方。
例子:
函數:
>>> def fun(x,y): ... return x*y ... >>> fun(23,2) 46 lambda
lambda x,y:x*y
#lambda 函數; x第一個參數,y第二個參數 ;x*y操作類型; 如果使用函數返回的對象,還需要一個接受的變量 >>> a=lambda x,y:x*y >>> a(2,3)6
優勢:
使用python編寫一些執行腳本時,lambda可以省去定義函數的過程,讓代碼更加精簡。
對於抽象,不需要複用的函數,定義名稱時比較困難,使用lambda不需要考慮名稱的命名;
使用lambda 可以讓代碼更加容易理解;
lambda 基礎
lambda 語句中,冒號前是參數,可以用多個,用逗號分隔,冒號右邊是返回值。
lambda 語句構建的其實是一個函數對象;;
>>> lambda x,y:x*y <function <lambda> at 0x7f9bed0d3578> >>> a=lambda x,y:x*y >>> a <function <lambda> at 0x7f9bed0e58c0> >>> a(2,2) 4
lambda應用實例:
reduce 爲逐次操作list裏的每項,接受的參數爲2個,最後返回的爲一個結果
乘積 >>> l=range(1,6) >>> l [1, 2, 3, 4, 5] >>> def f(x,y): ... return x*y ... >>> reduce (f,l) #將函數f,作用於l序列 120 轉換 >>> f=lambda x,y:x*y >>> reduce (f,l) 120 >>> reduce(lambda x,y:x*y,l) #l列表 120 >>>