天天看點

7.3 高階函數

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

1、map()函數,第一個參數為自定義函數,第二個參數為一個可疊代對象

lt=(1,2,3,4,5)
def f2(x):
    return x*x
ml=map(f2,lt)
print(type(ml))
print(list(ml))    # map 函數要想得到清單 得用 list() 轉換 否則得到的是 map 對象      

2、reduce 函數

傳入的函數必須接受兩個參數:

把可疊代對象的前兩個參數作為參數的實參,傳入到 f 函數中

把每次 f 運算的結果作為第一個實參,可疊代對象的下一個元素作為另一個實參,傳入函數 f 中,

以此類推,最終得到結果

from functools import reduce
def f(x,y):
    return x+y
print(reduce(f,[1,2,3,4,5,],10))   # reduce 函數需引入包
# from functools import reduce      

3、filter 函數

每次把可疊代對象的元素傳入進去,如果傳回為 True ,則保留該元素,如果傳回False,則不保留

a=[1,2,3,4,5,6]
def is_odd(x):
    return x%2==1
b=list(filter(is_odd,a))    # 此處應該将 filter 函數轉換成 list,否則得到的是 filter 對象
print(b)