高阶函数及map、reduce、filter、lambda、sorted等函数的应用

'''
高阶函数:一个函数可以接受另一个函数作为参数
高阶函数: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]

猜你喜欢

转载自www.cnblogs.com/liuhuacai/p/12305714.html