# 高阶函数map() 两个参数:1.函数 2.Iterable
# map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回
def f(x):
return x*x
r = map(f,[1,2,3,4,5])
# Iterator是一个惰性序列,因此通过list()函数把整个序列都计算出来并返回一个list
print (list(r))
# 把list所有数字转为字符串
a = list(map(str,[1,2,3,4,5]))
print (a)
# reduce()函数: 两个参数:1.函数 2. 序列
# reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算
#效果如下:reduce(f,[x1,x2,x3,x4]) = f(f(f(x1,x2),x3),x4)
# 对一个序列求和
from functools import reduce
def add(x,y):
return x+y
a = reduce(add,[1,3,5,7,9])
print (a)
# 求和运算可直接用python的内建函数sum()
a = sum([1,3,5,7,9])
print (a)
# 用reduce将序列[1,3,5,7,9]转换成13579
def fn(x,y):
return x*10+y
a = reduce(fn,[1,3,5,7,9])
print (a)
# str 转换成int 函数
def fn(x,y):
return x*10 + y
def char2num(s):
digits = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
return digits[s]
print (reduce(fn,map(char2num,'13579')))
# 整理成str2int的函数
DIGITS = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
def str2int(s):
def fn(x,y):
return x*10+y
def char2num(s):
return DIGITS[s]
print (reduce(fn,map(char2num,s)))
map\reduce函数
最新推荐文章于 2024-02-07 18:20:50 发布