之前同事问到的一道python题目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了之前同事问到的一道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题目的主要内容,如果未能解决你的问题,请参考以下文章