lambda函式和匿名函式

2021-09-26 10:58:42 字數 2817 閱讀 6176

lambda表示式可以用來宣告匿名函式,實際生成了乙個函式物件,該表示式的計算結果就是函式的返回值。

lambda表示式的基本語法如下:

lambda  arg1,arg2,arg3...:
1、lambda表示式的使用

f1 =

lambda a,b,c:a+b+c

print

(f1)

print

(f1(2,

3,4)

)>>

>

lambda

> at 0x00000000021b55e8

>

>>

>

9f2 =

[lambda a:a*2,

lambda b:b*3,

lambda c:c*4]

print

(f2[0]

(2),f2[1]

(3),f2[2]

(4))

>>

>49

16

lambda 通常用來編寫跳轉表,能夠按需執行操作,比如:

f3 =

[lambda a:a*2,

lambda b:b*3,

lambda c:c*4]

for l in f3:

print

(l(2))

>>

>

4>>

>

6>>

>

8

如果上述**用def函式來編寫則變為:

def

f1(x)

:return x *

2def

f2(x)

:return x *

3def

f3(x)

:return x *

4l =

[f1, f2, f3]

for f in l:

print

(f(2))

print

(l[0](

3))>>

>

4>>

>

6>>

>

8>>

>

6

2、說到lambda,就必須提及三個函式map、filter、reduce

map 函式

第乙個引數function以引數序列中的每乙個元素呼叫function函式,返回包含每次function函式返回值的新列表

語法:

map(function, iterable, ...)
map()會根據提供的函式對指定的序列做操作,比如有個列表,需要將列表的每個欄位加10。

##方法一

new_list_show =

for i in list_show:10)

print

(new_list_show)

>>

>[11

,13,15

,17]##方法二

defadds

(x):

return x+

10print

(list

(map

(adds,list_show)))

>>

>[11

,13,15

,17]###方法三

print

(list

(map

(lambda x:x+

10,list_show)))

>>

>[11

,13,15

,17]

map在python3中是乙個可迭代物件,引入需要使用列表的呼叫來迫使它生成所有的結果用於顯示。

filter函式

filter() 函式用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。它接收兩個引數,第乙個為函式,第二個為序列,序列的每個元素作為引數傳遞給函式進行判斷,返回true或者false,最後返回true的元素的放到新的列表中。

語法:

filter(function, iterable)
例如過濾0-9中,能被2整除的數字組成的乙個列表

print

(list

(filter((

lambda x:x %2==

1),range(10

))))

>>

>[1

,3,5

,7,9

]

reduce函式

reduce() 會對引數序列中元素進行累積。先對資料集合中的第1,2和元素進行function操作,執行的結果再與集合中第3個元素用function函式運算,以此類推,最後得到最終的結果。

語法:

reduce(function, iterable[, initializer])
python3使用reduce函式要先:from functools import reduce

from functools import

reduce

print((

reduce((

lambda x,y:x+y),[

1,3,

5,7,

9]))

)>>

>

25

參考:

lambda函式,匿名函式

簡單的來說lambda是匿名函式的表示式。匿名函式是什麼,匿名函式通常來說是你需要定義函式,但是又不想費神的去命名乙個函式的場合下使用的。舉乙個例子來說 將乙個list的裡面的每個元素都平方 map lambda x x x,y for y in range 10 過 這個方法要好過 def sw ...

lambda匿名函式

匿名函式 lambda函式是一種快速定義單行的最小函式,是從lisp借用來的,可以用在任何需要函式的地方。def f x,y return x y g lambda x,y x y g 2,3 優點 1 使用python寫一些執行的指令碼時,使用lambda可以省去定義函式的過程,讓 更精簡 2 對...

lambda匿名函式

lambda語句中,冒號前argumes是引數,可以有多個,可以用逗號隔開或其他形式,冒號右邊的是表示式,並將其結果返回。示例 f lambda x,y x y print f 2,3 6myadd lambda args sum args result myadd 1,3,4 print resu...