高阶函数与与匿名函数

来源:互联网 发布:电子实验室软件 编辑:程序博客网 时间:2024/06/06 23:50
高阶函数


#就是把函数当成参数传递的一种函数
def add(x,y,f):
    return f(x)+f(y)
print (add(-8,11,abs))
19 
#map()函数 
#map()是一个内置函数,他接受一个函数f和一个list或者tuple,并且将里面的元素传递给函数f,最后交给map()函数处理,并且返回一个列表 
#map()函数第一个参数是函数,第二个参数是可迭代对象
lt =[1,2,3,4,5]
def f2(x):
    return x*x
m1=map(f2,lt)
print(type(m1))
print (m1)
type ‘list’ 
[1, 4, 9, 16, 25]
#reduce()函数 
#传入的函数必须接受两个参数 
#每次把可迭代对象的前两个参数作为函数的实参,传入到f函数中 
#把每次前两个元素的运算的结果作为第一个实参,继续与下一个参数做运算,直到读完元素
def f(x,y):
    return x+y
print (reduce(f,[1,2,3,4,5],10))
25
#filter()函数 
#每次把可迭代对象的元素传入进去,如果返回为True,则保留该元素,如果返回为False,则不保留
a =[1,2,3,4,5,6]
def is_odd(x):
    return x%2 ==1
print(filter(is_odd,a))
[1, 3, 5]
#sorted()函数 
#对字典进行排序 
#sorted(…) 
# sorted(iterable, cmp=None, key=None, reverse=False) –> new sorted list 
#iterable:是可迭代类型; 
# cmp:用于比较的函数,比较什么由key决定; 
# key:用列表元素的某个属性或函数进行作为关键字,有默认值,迭代集合中的一项; 
# reverse:排序规则. reverse = True 降序 或者 reverse = False 升序,有默认值。 
# 返回值:是一个经过排序的可迭代类型,与iterable一样。
mm=dict(a=1,c=4,b=10,d=9)
#按照key值升序,返回一个列表
test1 = sorted(mm.iteritems(),key =lambda d:d[0],reverse=False)
#按照value值升序,返回一个列表
\test = sorted(mm.iteritems(),key =lambda d:d[1],reverse=False)
print test1
print test
[(‘a’, 1), (‘b’, 10), (‘c’, 4), (‘d’, 9)] 
[(‘a’, 1), (‘c’, 4), (‘d’, 9), (‘b’, 10)]
匿名函数


#没有名字的函数
def sum(x,y):
    return x+y
print (sum(1,5))
#下面就是匿名函数,结果跟上面一样都为6
#匿名函数方便使用,其实不常用
m = lambda x,y:x+y
print (m(1,5))

6
原创粉丝点击