1. 程式人生 > >學習筆記(11月02日)--高階函數

學習筆記(11月02日)--高階函數

學習筆記 python培訓

三周四次課(11月2日)


1.高階函數

高級函數就是把函數當成參數傳遞的一種函數:例如:

def add(x, y, f):
    return f(x) + f(y)


print(add(-8, 11, abs))

結果:

19

解釋:

1,調用add函數,分別執行abs(-8)和abs(11),分別計算出他們的值

2,最後再做和運算


map()函數

map函數是python內置的一個高階函數,它接收一個函數f和一個list,並把list的元素依次傳遞給函數f,然後返回一個函數f處理完所有list元素的列表

例子:


def f2(x):
    return x * x


l = [1, 2, 3, 4, 5, 6]
print(map(f2, l))

結果:


[1, 4, 9, 16, 25, 36]

解釋:

1,l是一個list,把此list的元素傳入函數f2,求每個元素的平方。

2,把最終所有的計算結果合並成一個新的list,就如新的結果所示。


reduce()函數

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

例子:


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


print(reduce(f, [1, 2, 3, 4, 5], 10))

結果:

25

解釋:

1,計算a = f(1,2)的值為3

2,計算b = f(a,3)的值為6

3,計算c = f(b,4)的值為10

4,計算d = f(c,5)的值為15

5,計算f(d,10)的值為25

其實就相當於1+2+3+4+10,最後的10是一個默認值,即最終在執行一次。



2.匿名函數


學習筆記(11月02日)--高階函數