标签:字符串转换 数据 word 小数点 seq reduce 替换 origin .com
之前同事问了一道Python题目如下,暂时归类为面试题
‘123.456‘
的字符串转换成浮点型数据方法一:
>>> print ‘{:.3f}‘.format(float(‘123.456‘))
>>> 123.456
方法二:指定map
、reduce
高阶函数
思路:先处理小数点,然后在整数位、小数位相加。步骤如下
s = ‘123.456‘
处理小数:使用字符串切片方式。
s.split(‘.‘)
这样就得到长度为2
的数组[‘123‘, ‘456‘]
处理list中的第一个元素(整数列)。使用迭代的方式得到整数123
def map_int(s):
‘‘‘
@see: 迭代时把字符串转换成int类型
‘‘‘
return int(s)
然后使用高阶函数map(func, seq)
对list中的字符串迭代:得到[1, 2, 3]
map(map_int, s.split(‘.‘)[0])
使用高阶函数reduce(func, seq)
,对map()
后的数据累积得到123
reduce(lambda x,y : x*10 + y, map(map_int, s.split(‘.‘)[0]))
同样的方法处理小数位
reduce(lambda x,y : x*0.1 + y, map(map_int, s.split(‘.‘)[1][::-1])) * 0.1
整个代码块如下:或者直接把map_int()函数替换为:lambda x:int(x)
def map_int(s):
‘‘‘
@see: 迭代时把字符串转换成int类型
‘‘‘
return int(s)
reduce(lambda x,y : x*10 + y, map(map_int, s.split(‘.‘)[0])) + reduce(lambda x,y : x*0.1 + y, map(map_int, s.split(‘.‘)[1][::-1])) * 0.1
generated by haroopad
标签:字符串转换 数据 word 小数点 seq reduce 替换 origin .com
原文地址:http://www.cnblogs.com/xiaozi-autotestman/p/7296596.html