自定义高阶函数

Posted 大家猴啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义高阶函数相关的知识,希望对你有一定的参考价值。

def add_num(a, b, f=abs):
    return f(a) + f(b)
res = add_num(-7.2,5)  # 12.2
res = add_num(2.8,5.1,round)  # 8
print(res)

  

f 默认 abs 函数名,也可以用 round 函数名

python高阶函数和匿名函数

高阶函数

允许将函数本身作为参数传入另一个函数;允许返回一个函数。允许返回一个函数。

map()函数

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

例子

#定义一个函数f2求平方,使用map函数,求list1的值的平方,list1平方规则按照f2函数执行,返回结果类型为list。

list1 = [1, 2, 3, 4, 5,]

def f2(x):

    return x*x 

list2 = map(f2, list1)

print type(list2)

print list2

reduce()函数

必须接收两个参数,最多接收三个参数。

例子

#定义一个函数f求和,使用reduce函数,求list1相加的值,再加20。list1相加规则按照f函数执行,先执行1+2,再用1+2的值与3相加,以此类推

list1 = [1, 2, 3, 4, 5,]

def f(x, y):

    return x+y

print reduce(f,list1,20)

filter()函数

会将可迭代对象元素传入,如果返回true则保留,如果返回false则不保留元素

例子:

a = [1, 2, 3, 4, 5, 6, 7]

def f(x):

    return x%2 == 1

b = list(filter(f,a))

#python3.5.1需要将filter转换为list再进行输出

print (b)

sorted()函数

可以针对所有的可迭代对象进行排序,返回一个新的list

使用方法:

sorted(...)  

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

cmp:有两个参数,参数的值都是从可迭代对象中取出,此函数的规则:大于返回1,小于返回-1,等于返回0

key:具体的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素进行排序

reverse:判断是否反转,默认情况下不反转

例子

dic1 = {‘Q‘:7, ‘W‘:8, ‘E‘:9}

print(dic1)

for key, value in dic1.items():

    print(key, value)

d = sorted(dic1.items())

print(d)

匿名函数

不需要显示定义的函数,没有名字的函数

例子

def f2(x,y):

    return x+y

等于

c = lambda x1,y1:x1+y1

print(c(4,5))

例子

def build(x2, y2):

    return lambda: x2 * x2 + y2 * y2


本文出自 “粗粮面包” 博客,请务必保留此出处http://culiangmianbao.blog.51cto.com/10475024/1978589

以上是关于自定义高阶函数的主要内容,如果未能解决你的问题,请参考以下文章

自定义高阶函数

七,Kotlin常见高阶函数用法

python高阶函数和匿名函数

高阶函数

函数式编程--高阶函数--sorted

map高阶函数