Python-高阶函数及匿名函数

1.高阶函数 

就是把函数当成参数传递的一种函数。

例如:

def add(x,y,f):
    return f(x)+f(y)
print(add(-8,11,abs))
结果:

19//调用add函数,分别执行abs(-8)和abs(11),分别计算出他们的值,最后求和
下面介绍几个高阶函数

        map() 函数

map()是内置的高阶函数,它接受一个函数f 和一个list,并把List 的元素以此传递给函数f,然后返回一个函数f 处理完所有list元素的列表。

用法:

map(第一个参数为自定义函数,第二个参数为一个可迭代对象)

返回值:是列表

map() 把列表中的每个元素当成一个值传入函数,最终返回的还是一个可迭代对象(列表)

def f2(x):
    return x*x
l=[1,2,3,4,5,6]
print(map(f2,l))

结果:

[1, 4, 9, 16, 25, 36]
其中:l 是一个list,把此list 的元素传入函数f2,求每个元素的平方,最终把所有的计算结果合并成一个新的list。

reduce()函数

也是内置的高阶函数,reduce()函数接受的参数和map()类似,一个函数f,一个list .但行为和map()不同。

reduce()传入的函数f 必须接收两个参数,第一次调用是把list的前两个元素传递给f,第二次调用时,就是把前两个list 元素的计算结果当成第一个参数,list的第三个元素当成第二个参数,传入f进行操作,以此类推,并返回最终结果的值

举例:


def f(x,y):
    return x+y
print (reduce(f,[1,2,3,4,5],10))
结果:

25 //1+2=3 3+3=6  6+4=10 10+5=15 15+10=25

filter() 函数

其意思是过滤。filter函数接收一个函数f 和一个list ,这个函数f 的作用是对每个元素进行判断,返回True 或False。

       filter()根据判断结果自动过滤掉不符合条件的元素,返回符合条件元素组成的新list

filter() 每次把可迭代对象的元素传入进去,若返回为True,则保留该元素,若返回为False,则不保留该元素。

举例:

a = [1,2,3,4,5,6,7]
def  dodd(x):
    return x %2  == 1
    print(filter(dodd, a))
其结果:

[1,3,5,7]
 

sorted()函数

sorted(iterable,cmp=None,key=None,reverse=False)-->new sorted list

对字典进行排序:

按照value 排序

mm=dict(a=1,b=10,c=3,d=9)
print(sorted(mm.iteritems(),key=lambda d:d[1],reverse=True))

结果:

[('b', 10), ('d', 9), ('c', 3), ('a', 1)]
作用:

返回一个经过排序的列表

第一个参数是一个literable,返回值是一个对literable 中元素进行排序后的列表(list)

可选参数:cmp/key/reverse

cmp: 指定一个定制的比较函数

key:指定一个接收一个参数的函数,key参数的值应该是一个函数,这个函数接收一个参数并返回一个用于比较的关键字。

reverse: 布尔值,True,列表元素被倒叙排列


匿名函数

没有名字的函数。

lambda是一种快速定义单行的最小函数,可以用在任何需要函数的地方

def fun(x,y):
    return x*y

f=lambda x,y:x*y
print(f(2,3))
print(type(f))

结果:

6
<type 'function'>









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值