1. 程式人生 > >map和reduce應用

map和reduce應用

利用mapreduce編寫一個str2float函式,把字串'123.456'轉換成浮點數123.456

def str2float(s):        
    def char2num(s):
        digits={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
        return digits[s]
    def fn(x,y):
        return 10*x+y
    n=s.index('.')
    s1=list(map(char2num,[x for x in s[:n]]))
    s2=list(map(char2num,[x for x in s[n+1:]]))
    return reduce(fn,s1)+reduce(fn,s2)/10**len(s2)
#測試
print('str2float(\'123.456\') =', str2float('123.456'))
if abs(str2float('123.456') - 123.456) < 0.00001:
    print('測試成功!')
else:
    print('測試失敗!')

1、char2num()函式是為了將str字串轉化為int型別

2、 fn() 函式,用來把S1,S2這兩個list裡面的元素變成一個數

3、利用 index() 函式確定字串 S 中 ‘.’的位置

4、先利用切片把我們傳入的 str 分成以前以後兩個部分s1,s2(其實就是根據小數點分成整數和浮點數,分別處理),然後再把切割好的 str 利用 char2num() 變成整數,map() 函式負責把 int 作用到擷取的 str 的每個元素中去。