Python为我们提供了多种高级函数,map(fun,x)的作用是将fun函数依次作用到x这种Iterable类型上,并且返回一个Iterator类型。那么什么是Iterable和Iterator呢?
简单的说,反是可用于for循环的对象(诸如list,tuple,dict,str)被称为Iterable类型;而可作用与next()函数的对象都是Iterator类型(称之为懒惰型)。
reduce(fun,x)要求fun必须是两个参数,而且reduce把fun的结果作用到序列的下一个元素上,比如reduce(fun,[x1,x2,x3])的jie就是
fun(fun(x1,x2),x3)
下面就让我们提供一个简单的例子来加深对这些高级函数和类型的理解吧。
题目描述:现在有一个字符串类型的数据data ='123.456',需要自己编写一个函数将其转换为浮点数类型,得到的输出应为data= 123.456;
# -*- coding: utf-8 -*-
from functools import reduce
DIGITAL = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
def StrToFloat(L):
if not isinstance(L, str):
raise TypeError('输入的类型不是字符串类型');
for i ,j in enumerate( L ):
if j == '.':
L = L[0:i] + L[i+1:];
break ;
def fn(x,y):
return x * 10 + y ;
def CharTonum(s):
return DIGITAL[s]
return reduce( fn , map( CharTonum , L ) ) / pow( 10 ,( len( L ) - i ) ) ;
print(r"StrToFloat(\'123.456\') =", StrToFloat('123.456'))
输出为:
让我们解析一下上面的代码,for i , j in enumerate()是为了使用类似于C的for循环,i代表的是迭代的次数,j代表的是Iterable类型的元素。