Python高级函数之map与reduce

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类型的元素。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值