标签:author eve 传递 time tools type col test cto
高阶函数:就是把函数当成参数传递的一种函数,例如:
def add(x,y,f):
return f(x)+f(y)
print(add(-8,11,abs))
结果:
19
解释:
介绍几种常用的高阶函数
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # @time: 2017/11/1 21:09 4 # Author: caicai 5 # @File: def1.py 6 from functools import reduce 7 ###map()函数,第一个参数为自定义函数,第二个参数为可迭代对象 8 lt = [1,2,3,4,5] 9 10 def f2(x): 11 return x*x 12 ml = map(f2,lt) 13 print(type(ml)) 14 print(list(ml)) 15 print(‘################reduce######################‘,) 16 ###reduce()函数 17 #传入的函数必须接受两个参数, 18 #把可迭代对象的两个参数作为函数的实参,传入到f好吃中, 19 #把每次f运算的结果作为第一个实参,可迭代对象额下个元素作为另外一个实参,传入函数f中 20 #以此类推,最终得到结果, 21 def f(x,y): 22 return x + y 23 print(reduce(f,[1,2,3,4,5], 10 )) 24 25 print(‘##############filter######################‘) 26 #fukter函数 27 #函数会每次把可迭代对象的元素传入进去,如果返回为true,则保留该元素,如果返回为false,则不保留该函数 28 a = [1,2,3,4,5] 29 def is_odd(x): 30 return x%2 == 1 31 print(list(filter(is_odd,a)))
#sorted() 排序 #对字典就行排序 #sorted() mm = dict(a=2,c=1,b=3,d=4) print(mm) for i in mm: print(i) for j in mm.items(): print(j) #print(mm) test = sorted(mm.items(),key=lambda d: d[1]) # test = sorted(mm.items(),key = reverse=False) print(test)
输出结果
############sorted###########
{‘a‘: 2, ‘c‘: 1, ‘b‘: 3, ‘d‘: 4}
a
c
b
d
(‘a‘, 2)
(‘c‘, 1)
(‘b‘, 3)
(‘d‘, 4)
[(‘c‘, 1), (‘a‘, 2), (‘b‘, 3), (‘d‘, 4)]
匿名函数:没有名字的函数
实例
#正常函数表示 def sum(x,y): return x+y #匿名函数表示 m = lambda x, y: x+y print(m(4,5))
标签:author eve 传递 time tools type col test cto
原文地址:http://www.cnblogs.com/wxp997/p/7768803.html