一、lambda表示式形式
lambda後面跟乙個或多個引數,緊跟乙個冒號,以後是乙個表示式。冒號前是引數,冒號後是返回值。
lambda是乙個表示式而不是乙個語句。
lambda表示式可以出現在python語法不允許def出現的地方。
lambda表示式返回乙個值。
二、與def的區別
lambda用來編寫簡單的函式,不會再重複利用的函式。
而def用來處理強大的任務。
三、舉例 1、
fun = lambda x,y,z : x + y + z
print fun(1, 2, 3)
輸出結果:6
2、
fun = [(lambda n : i + n) for i in range(10)]
print fun[3](4)
print fun[4](4)
輸出結果13,13,並非期望的7,8
解析:fun為乙個函式陣列,i為全域性變數,即為9。fun[3](4)指呼叫fun中第三個函式,n賦值為3,所以結果為13。同理可得fun[4](4)值為13。
改為如下:
fun = [(lambda n,i = i : i + n) for i in range(10)]
print fun[3](4)
print fun[4](4)
輸出結果為:7,8。為想要的結果。
3、如果使用過filter/map/reduce這幾個函式,就會知道lambda表示式真的在匿名函式的寫法上非常省時省力。
print filter(lambda x : x % 2 == 0, range(10))
print map(lambda x, y : x * y, range(1,4), range(1,4))
print reduce(lambda x, y : x + y, range(101))
輸出結果:
[0, 2, 4, 6, 8]
[1, 4, 9]
5050
python中Lambda表示式
lambda表示式 lambda 引數,引數,return 的表示式 def ds x return 2 x 1 print ds 3 7g lambda x 2 x 1 print g 3 7add lambda x,y x y print add 1,5 6 兩個bef 過濾器 filter 對...
Python中lambda表示式學習
lambda只是乙個表示式,函式體比def簡單很多。lambda的主體是乙個表示式,而不是乙個 塊。僅僅能在lambda表示式中封裝有限的邏輯進去。lambda表示式是起到乙個函式速寫的作用。允許在 內嵌入乙個函式的定義。如下例子 定義了乙個lambda表示式,求三個數的和。再看乙個例子 用lamb...
Python中的lambda表示式
lambda 是為了減少單行函式的定義而存在的。如果可以使用for.in.if來完成的,堅決不用lambda。g lambda x x 1g 1 2 g 2 3 當然,你也可以這樣使用 lambda x x 1 1 2可以這樣認為,lambda作為乙個表示式,定義了乙個匿名函式,上例的 x為入口引數...