python之高阶函数--map()和reduce()

以下为学习笔记:来自廖雪峰的官方网站

1.高阶函数:简单来说是一个函数里面嵌入另一个函数

2.python内建的了map()和reduce()函数

map()函数接收两参数,一个是函数,一个是Iterable.    map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterable返回

例子:

#map函数
def f(x):
return x * x
r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) #map函数返回一个函数和一个Iterable
print r

#将数字作为字符串输出

print(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))


reduce()函数:把一个函数作用在一个序列【x1,x2,x3,...】上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累计计算,其效果就是
reduce(f,[x1,x2,x3,x4])=f(f(f(x1,x2),x3),x4)

3.练习题1:将名字规范化
def normalize(name):   #规范名字的写法
name = name[0].upper() + (name[1:]).lower()
return name

r = map(normalize, ['LISA', 'adam', 'BaRt'])
print r

练习题2:#python提供sum()函数可以接受一个list并求和,请编写一个prod()函数,可以接受一个list,并求和
from functools import reduce

l = [3, 5, 7, 9]
def prod(a, b):
return a * b

print(reduce(prod, l))

练习题3.#利用map和reduce编写一个str2float函数,把字符串‘123.456’变成123.456
from functools import reduce

def char2num(s):
return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]

def str2float(s):
s = s.split('.')
if len(s[0]) == 0:
s[0] = '0'
return (reduce(lambda x, y: x * 10 + y, map(char2num, s[0]))) + \
(reduce(lambda x, y: x * 10 + y, map(char2num, s[1]))) * pow(0.1, len(s[1]))

print(str2float('123.456'))

转载于:https://www.cnblogs.com/xiaobucainiao/p/5709897.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值