python高阶函数(map\reduce、filter和sorted)

map、reduce、filter、sorted这四种高阶函数有一个共同特点就是传入一个函数和一个列表,调用不同的函数对列表进行处理。

map:传入的函数一般是对单个对象进行处理,比如大写转小写,求数的绝对值等。Map负责把列表(不只是列表,只要是iterable就行)中每一个元素都带入传入的函数进行处理,返回结果也存入一个列表。

把每个元素进行加2操作:

def add2(x):

    return x+2

f=map(add2,range(0,10))

print(list(f))

[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

 reduce: 传入的函数一般是对两个对象进行处理,比如a+b、a*b、’a’+’b’等。reduce负责把列表(不只是列表,只要是iterable就行)中元素按顺序都带入传入的函数进行处理返回一个处理得到的新的值存入列表首位,继续带入处理,最终结果是一个值,是通过传入的函数对列表进行嵌套处理得到的结果。

对序列进行求和:

from functools import reduce

def add2(x,y):

    return x+y

f=reduce(add2,range(0,10))

print(f)



45

filter:也与map、reduce类似,不过filter主要用于判断筛选,传入的函数一般是判断单个对象是否符合要求,符合返回真,不符合返回假,最后函数返回的是一个筛选掉不合格数据的列表。

除去列表中的奇数:

def pd(x):

    return x%2==0

f=filter(pd,range(0,10))

print(list(f))



[0, 2, 4, 6, 8]

sorted:主要用于数据排序,传入一个列表(不只是列表,只要是iterable就行),对列表元素进行从小到大排序。传入一个key代表根据key来进行排序,类似于c++algorithm中的sort排序传入cmp函数。还可以传入一个reverse=True代表逆序。

根据名字对学生和成绩进行逆序排序:

def pd(x):

    return x[0]

f=sorted([('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)],key=pd,reverse=True)

print(f)

[('Lisa', 88), ('Bob', 75), ('Bart', 66), ('Adam', 92)]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值