高阶函数和匿名函数

来源:互联网 发布:windows小键盘 编辑:程序博客网 时间:2024/06/07 14:25

1.高阶函数

高阶函数就是把函数当成参数传递的函数。

例如:

def add(x,y,f):    return f(x) + f(y)print add(-4,3,abs)
结果是 7


map()函数

map()函数的python内置的高阶函数,他接受一个函数f 和参数list,并把list的元素传递给函数f,然后返回一个函数f处理完list元素的列表。

例如:

lt = [1,2,3,4,5]def fun1(x):    return x*xml = map(fun1,lt)print ml
最终返回的结果是个列表


reduce()函数 

reduce函数是python内置的高阶函数,reduce()函数接收的参数跟map()类似,一个函数f,一个list,但行为和map()不同,reduce函数传入的f必须接收2个参数,第一次调用把list的前两个元素传递给f,第二次调用时就是把前两个 元素计算结果当成第一个参数,list的第三个元素当成第二个参数,传入f进行操作,以后以此类推,直到返回最终结果。

例如:

lis = [1,2,3,4,5]def fun2(x,y):    return x + yres = reduce(fun2,lis,10)print res
计算结果是

25

解释:  

1.a =  fun2(1,2)  值为3

2.b =  fun2(a,3)  值为 6

3.c =  fun2(b,4)  值为 10

4.d = dun2(c,5) 值为15 

5,计算 f(d,10) 结果是25、
# 传入的函数必须接收2个参数。


filter()函数

filter()函数是python内置的一个高阶函数,filter()函数接收一个函数f 跟一个list.这个函数f的作用就是对每个元素进行判断,返回true 或者false. filter()判断的结果自动过滤掉不符合条件的元素,返回由符合条件的元素组成的新的list列表

举例:

lis2 = [1,2,3,4,5,6,7,8,9,10]def fun3(x):    return x % 2 == 0rus = filter(fun3,lis2)print (rus)
返回结果:

[2, 4, 6, 8, 10]


2.匿名函数

顾名思义就是没有名字的函数,lambda是一种快速定义单行的最小函数,可以用在任何需要函数的地方。

例如:

def sum(x,y):    return x + ym = lambda x,y:x+yprint (m(4,5))print type(m)