Python中lambda表示式
阿新 • • 發佈:2019-01-29
一、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、
輸出結果13,13,並非期望的7,8fun = [(lambda n : i + n) for i in range(10)] print fun[3](4) print fun[4](4)
解析: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