Python中lambda表示式

2021-07-10 06:06:12 字數 1070 閱讀 6645

一、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為入口引數...