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批量修改文件后缀示例代码分享
Dec 24 Python
python中ConfigParse模块的用法
Sep 29 Python
利用Fn.py库在Python中进行函数式编程
Apr 22 Python
学习python之编写简单乘法口诀表实现代码
Feb 27 Python
tensorflow 中对数组元素的操作方法
Jul 27 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
Aug 07 Python
python flask 如何修改默认端口号的方法步骤
Jul 12 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
Jul 23 Python
Python将视频或者动态图gif逐帧保存为图片的方法
Sep 10 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
Mar 13 Python
爬虫代理的cookie如何生成运行
Sep 22 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
第十四节 命名空间 [14]
2006/10/09 PHP
php设计模式 Factory(工厂模式)
2011/06/26 PHP
PHP封装的字符串加密解密函数
2015/12/18 PHP
Zend Framework教程之Zend_Db_Table用法详解
2016/03/21 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
一些常用的Javascript函数
2006/12/22 Javascript
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
JavaScript实现的使用键盘控制人物走动实例
2014/08/27 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
微信小程序实现图片自适应(支持多图)
2017/01/25 Javascript
JavaScript实现三级联动菜单实例代码
2017/06/26 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
python读取html中指定元素生成excle文件示例
2014/04/03 Python
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
编写Python CGI脚本的教程
2015/06/29 Python
python 上下文管理器使用方法小结
2017/10/10 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
eBay加拿大站:eBay.ca
2019/06/20 全球购物
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
主持人演讲稿范文
2013/12/28 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
2014年度个人工作总结
2014/11/07 职场文书
恋恋笔记本观后感
2015/06/16 职场文书
退休职工欢送会致辞
2015/08/01 职场文书
经典爱情感言
2015/08/03 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server