python 基础 4.2 高阶函数上

一.高阶函数
把函数当做参数传递的一种函数
 
1》map()函数
map函数是python内置的一个高阶函数,它接受一个函数f和一个list,并把list元素以此传递给函数f,然后返回一个函数f处理完所有list元素的列表,如下所示:
 
#map()函数,传入的必须是一个可迭代的对象
lt = [1,2,3,4,5]
# lt = [1,2,3,4,5]
def f2(x):
return x*x
ml = map(f2,lt)
print type(ml)
print ml
 
>>> <type 'list'>
[1, 4, 9, 16, 25]
 
 
2>reduce()函数
reduce()函数也是python内置的一个高阶函数,reduce()函数接收的参数和map()类似,一个函数f,一个list,但行为和map()不同,reduce()传入的函数f必须接收两个参数,第一次调用是把list的前两个元素传递给f,第二次调用时,就是把前两个list元素的计算结果当成一个参数,list的第三个元素当成第二个参数,传入f进行操作,以后以此类推,并返回最终结果值。
 
##reduce()函数
def f(x,y):
return x + y
print reduce(f,[1,2,3,4,5],10)
 
>>> 25
 
解释:
1.计算 a = f(1,2)的值为3
2.计算 b = f(a,3)的值为6
3,计算c = f(b,4)的值为10
4,计算d = f(c,5)的值为15
5,计算f(d,10)的值为25
其实就是相当于 1+2+3+4+5+10,最后10是一个默认值,及最终在执行一次。
 
 
3》filter()函数
filter英文单词就是过滤的意思,filter()函数是python内置的另一个有用的高阶函数,filter() 函数接收一个函数f和一个list,这个函数f的作用是对每个元素进行判断,返回true或flase,filter() 根据判断结果自动过滤不符合条件的元素,返回由符合条件元素组成的新list,例子如下:
 
###filter() 函数每次把可迭代对象的元素传入进去,如果返回未True,则保留该元素,如果返回为False,则不保留.该函数是保留真的,过滤掉假的
a = [1,2,3,4,5,6]
def is_old(x):
return x%2 ==1
#带入实参is_old=5 传入
# print is_old(5)
 
#带入实参,列表a传入
print filter(is_old,a)
 
>>> True
 
>>> [1, 3, 5]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/lzcys8868/p/7772753.html