1. 程式人生 > >Python學習筆記系列——高階函數(map/reduce)

Python學習筆記系列——高階函數(map/reduce)

from 類型 fun 轉換 浮點 color normal 整數 cto

from functools import reduce
#變量可以指向函數,函數的參數能接受變量,那麽一個函數就可以接受另一個函數作為參數,這種函數被稱之為高階函數
def add(x,y,f):
    return f(x)+f(y)
print(add(-5,-9,abs))

‘‘‘  map()函數接受兩個參數,一個是函數,一個是Iterable。map將傳入的函數依次作用到序列的每個元素,並把結果作為新的Iterable返回。
舉例函數作用說明:把f(x)作用在list的每一個元素並把結果生成一個新的list。  ‘‘‘
def f(x):
    return
x*x r=map(f,[1,2,3,4,5,6]) print(list(r)) L=list(map(str,[1,4,7,2,5,8])) print(L) ‘‘‘ reduce把一個函數作用在一個序列上,這個函數必須接受兩個參數,reduce把結果繼續和序列的下一個元素做累積計算。 即reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4) ‘‘‘ #將序列[1,5,9]轉換成整數159 def add(x,y): return x*10+y result=reduce(add,[1,5,9])
print(result) #將str類型轉換成int def fn(x,y): return x*10+y def char2num(s): digite = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9} return digite[s] ms=reduce(fn,map(char2num,13579)) print(ms) #首字母大寫 def normallize(name): return name.capitalize() L1
= [adam, LISA, barT] L2 = list(map(normallize,L1)) print(L2) #接收一個list並求積 def prod(x,y): return x*y r1 = [3,5,7,9] r2 = reduce(prod,r1) if r2 ==945: print(procedure success) else: print(procedure fail) #把字符串‘123.456‘轉換成浮點數123.456 def str2float(s): def fun(x,y): return x*10+y def char2num(s): digite = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9} return digite[s] n=s.index(.) s1=list(map(char2num,s[:n])) #s1 = list(map(int, s[:n])) s2=list(map(char2num,s[n+1:])) #s2 = list(map(int, s[n+1:])) return reduce(fun,s1)+reduce(fun,s2)/10**len(s2) print(str2float(123.456))

___願先生心境,四季如春

Python學習筆記系列——高階函數(map/reduce)