1. 程式人生 > >Python程式設計——map&reduce的應用

Python程式設計——map&reduce的應用

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:]))