作者:手机用户2502896851 | 来源:互联网 | 2023-10-10 10:43
Python面试题之前同事问了一道Python题目如下,暂时归类为面试题题目:把类似123.456的字符串转换成浮点型数据方法一:>>>print
Python面试题
之前同事问了一道Python题目如下,暂时归类为面试题
题目:把类似'123.456'
的字符串转换成浮点型数据
处理小数:使用字符串切片方式。
s.split('.')
这样就得到长度为2
的数组['123', '456']
处理list中的第一个元素(整数列)。使用迭代的方式得到整数123
def map_int(s):
'''
@see: 迭代时把字符串转换成int类型
'''
return int(s)
"> def map_int(s):
'''
@see: 迭代时把字符串转换成int类型
'''
return int(s)
然后使用高阶函数map(func, seq)
对list中的字符串迭代:得到[1, 2, 3]
map(map_int, s.split('.')[0])
"> 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*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
"> 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
"> 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