高階函數和匿名函數

1.高階函數

高階函數就是把函數當成參數傳遞的函數。

例如:

def add(x,y,f):
    return f(x) + f(y)
print add(-4,3,abs)
結果是 7


map()函數

map()函數的python內置的高階函數,他接受一個函數f 和參數list,並把list的元素傳遞給函數f,然後返回一個函數f處理完list元素的列表。

例如:

lt = [1,2,3,4,5]

def fun1(x):
    return x*x
ml = map(fun1,lt)
print ml
最終返回的結果是個列表


reduce()函數 

reduce函數是python內置的高階函數,reduce()函數接收的參數跟map()類似,一個函數f,一個list,但行爲和map()不同,reduce函數傳入的f必須接收2個參數,第一次調用把list的前兩個元素傳遞給f,第二次調用時就是把前兩個 元素計算結果當成第一個參數,list的第三個元素當成第二個參數,傳入f進行操作,以後以此類推,直到返回最終結果。

例如:

lis = [1,2,3,4,5]

def fun2(x,y):
    return x + y

res = reduce(fun2,lis,10)
print res
計算結果是

25

解釋:  

1.a =  fun2(1,2)  值爲3

2.b =  fun2(a,3)  值爲 6

3.c =  fun2(b,4)  值爲 10

4.d = dun2(c,5) 值爲15 

5,計算 f(d,10) 結果是25、
# 傳入的函數必須接收2個參數。


filter()函數

filter()函數是python內置的一個高階函數,filter()函數接收一個函數f 跟一個list.這個函數f的作用就是對每個元素進行判斷,返回true 或者false. filter()判斷的結果自動過濾掉不符合條件的元素,返回由符合條件的元素組成的新的list列表

舉例:

lis2 = [1,2,3,4,5,6,7,8,9,10]

def fun3(x):
    return x % 2 == 0
rus = filter(fun3,lis2)
print (rus)
返回結果:

[2, 4, 6, 8, 10]


2.匿名函數

顧名思義就是沒有名字的函數,lambda是一種快速定義單行的最小函數,可以用在任何需要函數的地方。

例如:

def sum(x,y):
    return x + y
m = lambda x,y:x+y
print (m(4,5))
print type(m)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章