您的位置:首页 > 编程语言 > Python开发

Python 中的高阶函数

2017-03-28 19:50 113 查看
Python中的高阶函数和其他语言一样分别有以下几个:

map(fn,List)//映射
;

filter(fn,List);//过滤只返回满足条件的元素


sorted(List,key);//序列排序


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
进行反向排序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python