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