1. 程式人生 > >Python中lambda表示式

Python中lambda表示式

一、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