''' 高阶函数:一个函数可以接受另一个函数作为参数 高阶函数:map reduce filter sorted map:【序列映射】序列中的每个元素,实行function运算 reduce:【序列累计】必须接受两个参数,实现序列元素累计运算:如 1x2 2x3 6x4 24x5 ..... lambda:隐函数 filter:【真假过滤】接受一个函数和一个序列,作用于每个元素,根据返回值True 或 False决定是否保留 sorted:【key排序】 ''' def add(x,y,f): return f(x)+f(y) a = add(-1,3,abs) print(a) def f(x): return x*x m = map(f,[x for x in range(10)]) print(m) ##<map object at 0x000001EFED5AD160> print(list(m)) ##[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] from functools import reduce def add(x,y): return x+y r1 = reduce(add,[x for x in range(5)]) ##0+1 1+2 3+4 7+5 ..... r2 = reduce(lambda x,y:x*y,[1,2,3,4]) ##1x2 2x3 6x4 print(r1) print(r2) ##根据返回值的真假,过滤 fil = filter(lambda x :x % 2 == 1,[x for x in range(10)]) print(list(fil)) ##[1, 3, 5, 7, 9] ##根据key传入函数的返回值对序列排序 sor = sorted([23,45,-234,567],key=abs) print(sor) ##[23, 45, -234, 567]