Python程式設計——map&reduce的應用
阿新 • • 發佈:2018-12-11
map&reduce
map
map()函式接收兩個引數,一個是函式,一個是Iterable,map將傳入的函式依次作用到序列的每個元素,並把結果作為新的Iterator返回.
n = map(int,input())#將輸入值強制轉換為int 型
reduce
reduce把一個函式作用在一個序列[x1, x2, x3, …]上,這個函式必須接收兩個引數,reduce把結果繼續和序列的下一個元素做累積計算
>>> from functools import reduce >>> def fn(x, y): ... return x * 10 + y ... >>> reduce(fn, [1, 3, 5, 7, 9]) 13579
應用舉例
(1)利用map和reduce編寫一個str2int函式:
from functools import reduce DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9} def str2int(s): def fn(x, y): return x * 10 + y def char2num(s): return DIGITS[s] return reduce(fn, map(char2num, s))
(2)利用map和reduce編寫一個str2float函式
from functools import reduce def str2float(s): DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9} def char2num(s): return DIGITS[s] n = s.index('.') # 確定位置 return reduce(lambda x, y: x * 10 + y, list(map(char2num, s[:n] + s[n + 1:]))) / pow(10,len(s[n + 1:]))