首页 > 代码库 > 之前同事问到的一道python题目
之前同事问到的一道python题目
Python面试题
之前同事问了一道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
之前同事问到的一道python题目
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。