设为首页 加入收藏

TOP

python 高阶函数学习, map、reduce
2017-12-23 06:07:09 】 浏览:108
Tags:python 高阶 函数 学习 map reduce

一个函数可以接收另一个函数作为参数,这样的函数叫做高阶函数。

 

函数map():

map()函数接收两个参数,一个是函数,一个是Iterable, map把函数作用于序列的每一个元素,并把结果作为Iterator返回。

注意,返回的是生成器Iterator,所以取返回值的时候需要用for,或者next,或者通过list序列化之后才能取出来

举例:

def f(x):
return x * x #定义一个函数f(x),返回值是两个数的乘积

r = map(f, [1, 2, 3, 4, 5, 6]) #通过map函数让f(x)作用于后面序列的每一个元素

 

print('print(r)', r) #直接打印r,得到的是r变量指向的地址
==》print(r) <map object at 0x02658A30>

print('list(r) = ', list(r)) #把r序列化之后返回一个list输出
==》list(r) =  [1, 4, 9, 16, 25, 36]

#通过for循环输出
for n in r:
print(n)
==》

1
4
9
16
25
36

 

#通过next()输出:

while True:
try:
print(next(r))
except StopIteration as e:
print(e.value)
break

==》

1
4
9
16
25
36
None

reduce(f, [])函数:
需要传入两个参数,一个是函数f,这个函数f必须有两个参数,作用于后面的参数。reduce把计算的结果继续作用于f和序列的下一个元素
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
举例1:
def f(x, y): #定义一个函数,这个函数必须有两个参数
return x * y #返回值是两个数的乘积

#把函数f作为参数传入reduce函数
print(reduce(f, [1, 2, 3, 4]))
==》24

解析:
第一步:f(1, 2),输出的结果是1 * 2 = 2
第二步:第一步输出的结果被当做第二步的第一个参数传入计算 f(2, 3),输出的结果是 2 * 3 = 6
第三步:同理第二步 f(6, 4) => 6 * 4 = 24

举例2:
def MySum(x, y):
return x + y

print(reduce(MySum, [1, 2, 3, 4, 5]))
==》1+2+3+4+5=15




】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇python 面向对象十二 元类 下一篇python安装和环境变量的配置

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目