Python中常用的高阶函数实例详解


Posted in Python onFebruary 21, 2020

前言

高阶函数指的是能接收函数作为参数的函数或类;python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率.

lambda

当在使用一些函数的时候,我们不需要显式定义函数名称,直接传入lambda匿名函数即可。lambda匿名函数通常和其他函数搭配使用。

比如可以直接使用如下的lambda表达式计算当x=3时,y = x * 3 + 5的函数值。

In [1]: (lambda x: x * 3 + 5)(3)
Out[1]: 14

map

map函数将一个函数和序列/迭代器(可以传入多个)作为参数,应用函数到序列中的每个元素,返回一个迭代器。

In [4]: a = list(range(5))
In [5]: b = list(range(2, 7))
# 结合lambda匿名函数,对a列表中的每个元素,计算x * 3 + 5的函数值
In [6]: list(map(lambda x: x * 3 + 5, a))
Out[6]: [5, 8, 11, 14, 17]
In [9]: def add(x, y):
  ...:   return x+y
# 传入多个序列,a、b两个序列中的对应元素依次传入函数add中进行计算
# Note: a、b两个序列的长度可以不相等
In [10]: list(map(add, a, b))
Out[10]: [2, 4, 6, 8, 10]

filter

filter函数(filter(func, seq))借助一个函数来测试序列/迭代器中每个元素的真假,返回一个过滤后的迭代器。

In [18]: a = list(range(5))

In [19]: def isodd(number):
  ...:   if number % 2 == 0:
  ...:     return False
  ...:   return True
  ...:

In [20]: filter(isodd, a)
Out[20]: <filter at 0x1a6dc460748>

# 过滤掉所有偶数
In [21]: list(filter(isodd, a))
Out[21]: [1, 3]

reduce

reduce函数传入一个函数和序列/迭代器,它将滚动计算序列中元素,返回单个结果。例如要计算一个列表所有元素的和。

In [23]: from functools import reduce
In [24]: a = list(range(5))
In [25]: sum = reduce((lambda x, y: x + y), a)
In [26]: sum
Out[26]: 10

sorted

sorted(iter, key, reverse=False), 高级排序函数,可以根据key实现自定义排序。reverse=False表示默认排序结果升序。

# 比如按照a中每个字符串最后的数字大小,降序排序
In [30]: a
Out[30]: ['fasad_2', 'fadfc_4', '7hdc_0', 'ncsl_1', 'fai_3']

In [32]: sorted(a, key=lambda x: int(x[x.rindex('_') + 1:]), reverse=True)
Out[32]: ['fadfc_4', 'fai_3', 'fasad_2', 'ncsl_1', '7hdc_0']

总结

以上所述是小编给大家介绍的Python中常用的高阶函数实例详解,希望对大家有所帮助,也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
详解Django通用视图中的函数包装
Jul 21 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
Nov 05 Python
Python类的动态修改的实例方法
Mar 24 Python
Python装饰器知识点补充
May 28 Python
pycharm中成功运行图片的配置教程
Oct 28 Python
python 字典的打印实现
Sep 26 Python
python 实现保存最新的三份文件,其余的都删掉
Dec 22 Python
Django-xadmin+rule对象级权限的实现方式
Mar 30 Python
python中os包的用法
Jun 01 Python
Python使用OpenPyXL处理Excel表格
Jul 02 Python
解决Windows下python和pip命令无法使用的问题
Aug 31 Python
解决springboot yml配置 logging.level 报错问题
Feb 21 #Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 #Python
pytorch:model.train和model.eval用法及区别详解
Feb 20 #Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
Feb 20 #Python
pytorch 模型的train模式与eval模式实例
Feb 20 #Python
pytorch dataloader 取batch_size时候出现bug的解决方式
Feb 20 #Python
pytorch 使用加载训练好的模型做inference
Feb 20 #Python
You might like
Yii实现Command任务处理的方法详解
2016/07/14 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
javascript中match函数的用法小结
2014/02/08 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
iframe子页面与父页面在同域或不同域下的js通信
2014/05/07 Javascript
JavaScript截取字符串的2个函数介绍
2014/08/27 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
2017/01/19 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
jquery更改元素属性attr()方法操作示例
2020/05/22 jQuery
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
Python实现的金山快盘的签到程序
2013/01/17 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
windows下ipython的安装与使用详解
2016/10/20 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
台湾母婴用品购物网站:Infant婴之房
2018/06/15 全球购物
.NET面试问题集
2015/12/08 面试题
会计电算化专业毕业生自荐信
2013/12/20 职场文书
12岁生日感言
2014/01/21 职场文书
企业文化标语大全
2014/06/10 职场文书
专科生就业求职信
2014/06/22 职场文书
法定代表人身份证明书
2014/09/10 职场文书
高中校园广播稿3篇
2014/09/29 职场文书
购房协议书范本
2014/10/02 职场文书
大学生暑期实践报告
2015/07/13 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书
学生会自荐信
2019/05/16 职场文书