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