map和reduce应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/benzhaohao/article/details/79796343

利用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 的每个元素中去。


猜你喜欢

转载自blog.csdn.net/benzhaohao/article/details/79796343