Python 中的高阶函数

Python中的高阶函数和其他语言一样分别有以下几个:

  1. map(fn,List)//映射;
  2. filter(fn,List);//过滤只返回满足条件的元素
  3. sorted(List,key);//序列排序
  4. reduce(fn,List)//两两对折,返回一个唯一数值

这几位在语法结构和参数的先后顺序上会同其他语言有所不同,但是在意义上并无二至。

scores = [98,78,32,31,55,90,79];

def passExam(arg):
    return arg > 60;

check = list(filter(passExam,scores));

print(check)

上边这段代码是一段很简单的过滤学生成绩的代码,我们在这段代码中可以看出来filter()函数的外面包裹了一个list()函数,原因就在于filter()函数过滤后都是16进制的数据,需要list()函数进行转换。map()函数一样如此。

reduce()的用法中有一个坑,那就是py2和py3的不兼容。

scores = [98,78,32,31,55,90,79];

def sum(argA,argB):
    return argA+argB;


allStudents = reduce(sum,scores);

print(allStudents)

上面是一个很简单的py2的reduce求学生总分的算法。但是在py3版本中就会报错。这是由于py3版本中reduce已经从内置函数中删除,必须从functool中import进来。

最后,我们来看下排序算法,sorted():

我们可以看下最普通的排序:

scores = [98,78,32,31,55,90,79];

sort = sorted(scores);

print(sort)
//[31, 32, 55, 78, 79, 90, 98]

这就比js这种还要自己编写函数的不知道高到哪里去了,可以直接对数字进行排序。

我们再看看下面这段代码:

scores = [98,-8,-32,-31,55,90,79];

sort = sorted(scores,key=abs);

print(sort)
//[-8, -31, -32, 55, 79, 90, 98]

这段代码的核心点在于key=abs这个作为第二个参数的赋值表达式。它表示在排序时,给元素按照绝对值进行排序。因为这个功能,所以Python在排序方面比其他很多语言都要强大很多,比如可以根据字母的大小写,'Z'>'a'进行大小写分类,也可以忽略大小写str.lower.也可以添加第三个参数reverse= True进行反向排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值