python中lambda表示式使用實戰

2021-09-23 06:29:38 字數 3655 閱讀 9980

python 使用 lambda 來建立匿名函式

lambda只是乙個表示式,函式體比def簡單很多。

lambda的主體是乙個表示式,而不是乙個**塊。僅僅能在lambda表示式中封裝有限的邏輯進去

lambda函式擁有自己的命名空間,且不能訪問自有引數列表之外或全域性命名空間裡的引數。

雖然lambda函式看起來只能寫一行,卻不等同於c或c++的內聯函式,後者的目的是呼叫小函式時不占用棧記憶體從而增加執行效率。

lambda函式的語法只包含乙個語句,如下:

lambda

[arg1

[,arg2

,.....

argn

]]:expression

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 可寫函式說明

sum =lambda

arg1, arg2: arg1 + arg2;

# 呼叫sum函式

print

("相加後的值為 : "

, sum(

10,

20))

print

("相加後的值為 : "

執行結果:

filter()函式

用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表

,序列的每個元素作為引數傳遞給函式進行

判斷,然後返回 true 或 false,最後將返回 true 的元素放到新列表中

語法:filter

(function

,iterable)

引數:function -- 判斷函式

iterable -- 可迭代物件

map()函式m

ap()函式

會根據提供的函式對指定序列做對映

, map() 函式語法:

map(function

,iterable

,...)

引數:function -- 函式

iterable -- 乙個或多個序列

返回值:

python 2.x 返回列表。

python 3.x 返回迭代器。

示例:map

(lambdax:

x** 2,

[1, 2

, 3, 4

, 5])# 使用 lambda 匿名函式[1

, 4, 9

, 16

, 25]

# 提供了兩個列表,對相同位置的列表資料進行相加

>>>

map(

lambdax,

y: x+

y, [1

, 3, 5

, 7, 9

], [2

, 4, 6

, 8, 10])

[3, 7

, 11

, 15

, 19]

reduce() 函式

在 python 2 是內建函式, 從python 3 開始移到了 functools 模組

從左到右對乙個序列的項累計地應用有兩個引數的函式,以此合併序列到乙個單一值。

語法:reduce(function, sequence[, initial])

返回結果:

value

(一合併的值)

示例:

reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])  計算的就是((((1+2)+3)+4)+5)。

如果提供了 initial 引數,計算時它將被放在序列的所有項前面,如果序列是空的,它也就是計算的預設結果值了

4)巢狀使用

#lambda巢狀到普通函式中,lambda函式本身做為return的值

def

increment(n):  

# 定義函式

return lambda

x: x+n

f=increment(

4)  

# 通過函式定義lamba匿名函式

相當於:

lambda

x: x+

4print

(f(2

))  

# 呼叫匿名函式

執行結果: 6

其他形式格式使用基本都符合以上原理,大同小異

Python中lambda表示式

一 lambda表示式形式 lambda後面跟乙個或多個引數,緊跟乙個冒號,以後是乙個表示式。冒號前是引數,冒號後是返回值。lambda是乙個表示式而不是乙個語句。lambda表示式可以出現在python語法不允許def出現的地方。lambda表示式返回乙個值。二 與def的區別 lambda用來編...

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...