高阶函数:把函数当成参数传递的一种函数,例如
def add(x,y,f): return f(x) + f(y) print(add(-8,11,abs))
运行结果:
19
注:
1、 调用add函数,分别执行abs(-8)和abc(11),并分别计算他们的值
2、最后做运算
map()函数
map()函数是python内置的一个高级函数,它接受一个函数f和一个list,并把list的元素以此传递给函数f,然后返回一个函数f处理完所有list元素的列表。例如
def f2(x): return x*x l = [1,2,3,4,5] print(map(f2,l))
运行结果:
[1, 4, 9, 16, 25]
注:1、l是一个list,把此list的元素传入函数f2,求每个元素的平方
2、 把最终所有的计算结果合并成一个list。
reduce()函数
reduce()函数也是一个内置高阶函数,reduce()函数接收的参数和map()类似,一个函数f,一个list,和map()不同,reduce()传入的函数f必须接收2个参数,第一次调用是把list的前2个元素传递给f,第二次调用时,把两个list元素的计算结果当成一个参数,list的第三个元素当成第二个参数,传入f进行操作,以后一次类推,并返回最终结果。
def f(x,y): return x + y print(reduce(f,[1,2,3,4,5],10))
运行结果:
25
注:上面运行过程1+2+3+4+5 最后10是一个默认值,最终在执行一次
传入的函数必须接受2个参数
把可迭代对象的前两个参数作为函数的实参,传入函数f中
把每次f运算的结果作为一个实参,可迭代对象的下一个元素作为另一个实参,传入函数f中
一次类推,最终得到结果
filter()函数
filter()函数接收一个函数f和一个list,这个函数f的作用是对每个元素进行判断,返回True或False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。例:
a = [1,2,3,4,5,6,7,8] def is_odd(x): return x%2 == 1 print(is_odd(5)) print(filter(is_odd,a))
运行结果:
True
[1, 3, 5, 7]
注:
1、list的元素以此传入函数is_odd
2、is_odd判断每个元素是否符合条件,把符合条件的留下,不符合条件的舍弃
3、把最终所有符合条件的元素组成一个新的列表
函数每次把可迭代对象的元素传入进去,如果返回为true,则保留该元素,如果返回为false则不保留该元素
sorted()函数
sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
对字典排序
按照value进行排序
dic = dict(a=1,b=10,c=3,d=9)
dic = dict(a=1,b=10,c=3,d=9)
print(sorted(dic.iteritems(),key=lambda d:d[1],reverse=False))
结果:[('a', 1), ('c', 3), ('d', 9), ('b', 10)]
匿名函数:没有名字的函数
lambda()函数是一种快速定义单行的最小函数,可用在任何需要函数的地方
普通函数:
def fun(x,y): return x*y lambda函数: r = lambda x,y:x*y print(r(2,3)) print(type(r))
运行结果:
6 <type 'function'>