10、Python_高阶函数map/reduce/filter/sorted

1、map的使用:

map()函数可以把传入的函数作用到传入的Iterable中的每一个元素。

例:f(x)=x2(平方),要把这个函数作用在一个list[1,2,3,4,5,6,7,8,9]

def f(x):

    return x*x

r=map(f,[1,2,3,4,5,6,7,8,9])

 

2、reduce的用法:

reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算

例1:对一个序列求和

from functools import reduce

def add(x+y):

    return x+y

reduce(add,[1,2,3,45,5,6,7,8])

 

例2:将字串转成int

原始版本->

from functools import reduce

def fn(x,y):

    return x*10+y

reduce(fn,[1,3,5,7,9])

 

近代版本->

from functools import reduce

def fn(x,y):

    return x*10+y

def char2num(s):

    digits ={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}

    return didits[s]

reduce(fn,map(char2num,'13467'))

 

现代版本->

from functools import reduce

DIGITS={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}

def str2int(s):

    def fn(x,y):

        return x*10+y

    def char2int(c):

        return DIGITS[c]

    return reduce(fn,map(char2int,s))

 

未来超级版本->

from functools import reduce

DIGITS={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}

def char2num(s):

    return DIGITS[s]

def str2int(s):

    return reduce(lambda x,y:x*10+y,map(char2num,s))

 

3、filter用法:

filter()也接收一个函数和一个序列,传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素

例:删除list中偶数,只留下奇数

def is_odd(n):

    return n%2 ==1

list(filter(is_odd,[1,2,4,5,6,7,8,9,32]))

 

4、sorted的用法:

sorted用于排序

 

例1:简单排序

sorted([35,22,-44,54,234,4,65,224])

 

例2:接收一个key函数来实现自定义排序

sorted([35,22,-44,54,234,4,65,224],key=abs)

按绝对值来排序

 

例3:对字符串排序

sorted(['bob','jack','Rose','City'],key=str.lower,reverse=True)

这里先将字串变成小写,再反向排序

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值