天天看點

python學習38:高階函數,map和reduce的簡單介紹

 高階函數就是把函數名(函數名本身也是變量)作為參數傳入另外的函數中計算,傳入的函數,可以是系統函數,也可以是自定義函數,如下:

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


z = AddAbs(-10,10,abs)

print(z)


def TestF(t):
    return t * t

z = AddAbs(-10,10,TestF)

print(z)      

運作結果:

============================= RESTART: E:/abs.py =============================
20
200      

兩個高階函數:map和reduce

import functools
# from functools import reduce
list1 = [1,2,3,4,5,6]

def SquL(x):
    return x * x

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

print(list1)
new_list1 = map(SquL,list1)
print(new_list1)
print(list(new_list1))

new_str1 = functools.reduce(AddL,list1)
print(new_str1)      

 運作結果:

============================= RESTART: E:/abs.py =============================
[1, 2, 3, 4, 5, 6]
<map object at 0x000001C0627BDFD0>
[1, 4, 9, 16, 25, 36]
21      

Map其實就是建立一種映射關系。map有兩個輸入參數,一個是傳入的函數(映射關系建立的函數),另外一個是生成式(映射的結果),比如像清單。廖雪峰網站上說,map如果傳入一個清單,會傳回一個新的清單,但是我覺得說的有問題,可以看到上面的代碼,如果直接列印new_list1是列印不出來的,還需要加一個list()函數轉換一下。