lambda可以理解為一種小函數,但是它是一個表達式,而不是一個語句,所以在def不允許出現的地方仍然可以使用lambda函數,例如list里。但是lambda內只可以執行一個表達式。
1
2
3
4
5
6
7
8
|
def f(x): return x * * 2 print f( 3 ) a = lambda x: x * * 2 print a( 3 ) a = lambda x,y: x + y print a( 1 , 2 ) ~ |
一個lambda語句就相當于一個函數定義,調用的時候也和函數一樣。
map函數
有時候我們可以需要處理一個列表里的所有元素,可以使用一個for循環來完成這個工作。但是Python內置的map函數可以幫我們的忙,它接受函數和列表作為參數,然后返回函數處理之后的列表:
map函數有的時候可以用來替代循環,
它比for循環的效率更高,原因是它是直接對應的c語言里的循環。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
def add1(a): return a + 1 def add2(a, b): return a + b def add3(a, b, c): return a + b + c a1 = [ 1 , 2 , 3 , 4 , 5 ] a2 = [ 1 , 2 , 3 , 4 , 5 ] a3 = [ 1 , 2 , 3 , 4 , 5 ] b = map (add1, a1) print b b = map (add2, a1, a2) print b b = map (add3, a1, a2, a3) print b |
filter函數,是用來過濾列表的。簡單的說就是用一個函數來過濾一個列表,把列表的每一項傳遞進入過濾函數,過濾函數返回false就從這個列表中刪除該項。
1
2
3
4
5
6
7
|
def add1(a): if a > 2 : return True return False a1 = [ 1 , 2 , 3 , 4 , 5 ] b = filter (add1, a1) print b |
其實這個filter函數相當于這個:
1
2
|
c = [b for b in a1 if b > 2 ] print c |
總結
以上所述是小編給大家介紹的python內置函數:lambda、map、filter,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:https://www.cnblogs.com/llinzuxin/archive/2012/09/01/2950491.html