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访问类中docstring注释的实现方法
May 04 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
Jan 16 Python
Python编程实现正则删除命令功能
Aug 30 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
Jan 11 Python
python使用json序列化datetime类型实例解析
Feb 11 Python
详解小白之KMP算法及python实现
Apr 04 Python
python中的线程threading.Thread()使用详解
Dec 17 Python
Pytorch基本变量类型FloatTensor与Variable用法
Jan 08 Python
Python定义一个Actor任务
Jul 29 Python
python实现扫雷游戏的示例
Oct 20 Python
使用numpy实现矩阵的翻转(flip)与旋转
Jun 03 Python
Pillow图像处理库安装及使用
Apr 12 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
PHP5函数小全(分享)
2013/06/06 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
top.location.href 没有权限 解决方法
2008/08/05 Javascript
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
2016/03/13 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
2017/12/26 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
JavaScript中this函数使用实例解析
2020/02/21 Javascript
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
十一个高级MySql面试题
2014/10/06 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
汽车专业求职信
2014/06/05 职场文书
党的群众路线教育实践活动对照检查剖析材料
2014/10/09 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
逃课检讨书
2015/01/26 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL