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的Flask框架中Flask-Admin库的简单入门指引
Apr 07 Python
Python求导数的方法
May 09 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
Sep 08 Python
利用 python 对目录下的文件进行过滤删除
Dec 27 Python
Python实现接受任意个数参数的函数方法
Apr 21 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
python实现五子棋人机对战游戏
Mar 25 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
pytorch+lstm实现的pos示例
Jan 14 Python
Python正则表达式学习小例子
Mar 03 Python
在CentOS7下安装Python3教程解析
Jul 09 Python
Python多分支if语句的使用
Sep 03 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
PHP中设置时区方法小结
2012/06/03 PHP
php数字游戏 计算24算法
2012/06/10 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
js 代码优化点滴记录
2012/02/19 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
js实现select组件的选择输入过滤代码
2014/10/14 Javascript
js实现跨域访问的三种方法
2015/12/09 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
jQuery通用的全局遍历方法$.each()用法实例
2016/07/04 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
easyui-datagrid开发实践(总结)
2017/08/02 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
2019/06/03 Javascript
Python读写Excel文件的实例
2013/11/01 Python
使用grappelli为django admin后台添加模板
2014/11/18 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
Python贪吃蛇游戏编写代码
2020/10/26 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
python pyheatmap包绘制热力图
2018/11/09 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
2020/06/03 Python
基于python实现删除指定文件类型
2020/07/21 Python
小学教师学期末自我评价
2013/09/25 职场文书
教师实习自我鉴定
2013/12/14 职场文书
军训考核自我鉴定
2014/02/13 职场文书
会议主持词
2014/03/17 职场文书
销售主管竞聘书
2014/03/31 职场文书
电钳工人个人求职信
2014/05/10 职场文书
车辆年检委托书范本
2014/10/14 职场文书