声明:
我写此文的目的是帮助和我一样在廖雪峰老师官网上学习Python3的同学更好的理解和学习Python的知识,所以本博文及后续文章会跟着我的学习进度来走,主要内容是廖雪峰老师官网Python资料中每节知识点后的复习题的答案和解析,有一些是我自己原创的,有一些是网上整理的大神写的简洁但对新手并不是很明了的答案,我会尽可能的给出我的解析。
题目: 利用 map 和 reduce 编写一个 str2float 函数 , 把 字符串 ‘123.456’ 转换成浮点数’123.456’
答案:
from functools import reduce
def str2float(s):
def fn(x,y):
return x*10+y
n=s.index('.')
s1=list(map(int,[x for x in s[:n]]))
s2=list(map(int,[x for x in s[n+1:]]))
return reduce(fn,s1) + reduce(fn,s2)/10**len(s2)
print('\'123.4567\'=',str2float('123.4567')) 解析:
这个答案非原创,也是某位前辈写的。
1行,从 functools 包里调用 reduce
3-4行,定义一个 fn() 函数,用来把S1,S2这两个list里面的元素变成一个数。
5行,很关键的一步,利用 index() 函数确定字符串 S 中 ‘.’的位置。
6-7行,先利用切片把我们传入的 str 分成以前以后两个部分(其实就是根据小数点分成整数和浮点数,分别处理),然后再把切割好的 str 利用 int 变成整数,map() 函数负责把 int 作用到截取的 str 的每个元素中去。
8行,就说一个知识点,其他的都很好理解,m**n 这个表达的就是 m 的 n 次方。
版权声明:本文为zmy_3原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。