Python 中的高阶函数
2017-03-28 19:50
113 查看
Python中的高阶函数和其他语言一样分别有以下几个:
这几位在语法结构和参数的先后顺序上会同其他语言有所不同,但是在意义上并无二至。
上边这段代码是一段很简单的过滤学生成绩的代码,我们在这段代码中可以看出来
在
上面是一个很简单的py2的reduce求学生总分的算法。但是在py3版本中就会报错。这是由于py3版本中reduce已经从内置函数中删除,必须从functool中import进来。
最后,我们来看下排序算法,
我们可以看下最普通的排序:
这就比js这种还要自己编写函数的不知道高到哪里去了,可以直接对数字进行排序。
我们再看看下面这段代码:
这段代码的核心点在于
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(七)高阶函数,匿名函数
- python高阶函数
- python 中 高阶函数
- 分享一道伯克利 CS 61A 关于高阶函数的一道Python作业题(1)
- Python 2.5.7 高阶函数
- 分享一道伯克利 CS 61A 关于高阶函数的一道Python作业题(2)
- 【Python】[函数式编程]高阶函数,返回函数,装饰器,偏函数
- [Python进阶-1]高阶函数:闭包/装饰器/functools/lambda/map/filter
- python 函数式编程 高阶函数 装饰器
- 用一个简单的例子来理解python高阶函数
- Python学习 Day 5 高阶函数 map/reduce filter sorter 返回函数 匿名函数 装饰器 偏函数
- Python学习笔记 - 高阶函数
- python进阶一:高阶函数
- 【PYTHON】入门总结 高阶函数
- python之6-2高阶函数
- python 高阶函数
- Python基础8--内置高阶函数
- python中的高阶函数
- python学习记录(3)高阶函数
- Python教程学习简记8--Python 高阶函数 map/reduce filter sorted