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中的闭包用法实例详解
May 05 Python
python itchat实现微信自动回复的示例代码
Aug 14 Python
Queue 实现生产者消费者模型(实例讲解)
Nov 13 Python
python+pillow绘制矩阵盖尔圆简单实例
Jan 16 Python
Python UnboundLocalError和NameError错误根源案例解析
Oct 31 Python
NumPy 数组使用大全
Apr 25 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
Jun 18 Python
python装饰器相当于函数的调用方式
Dec 27 Python
django-csrf使用和禁用方式
Mar 13 Python
pandas数据拼接的实现示例
Apr 16 Python
python怎么判断素数
Jul 01 Python
Python的信号库Blinker用法详解
Dec 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
如何在php中正确的使用json
2013/08/06 PHP
ie focus bug 解决方法
2009/09/03 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
vue 中几种传值方法(3种)
2019/11/12 Javascript
js实现点击生成随机div
2020/01/16 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
python实现在字符串中查找子字符串的方法
2015/07/11 Python
Python循环语句中else的用法总结
2016/09/11 Python
Python基础中所出现的异常报错总结
2016/11/19 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
django中的数据库迁移的实现
2020/03/16 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
以设计师精品品质提供快速时尚:PopJulia
2018/01/09 全球购物
某公司的.net工程师面试题笔试题
2013/11/22 面试题
性能测试工程师的面试题
2015/02/20 面试题
幼教个人求职信范文
2013/12/02 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
2014年保密工作总结
2014/11/22 职场文书
民间借贷借条范本
2015/05/25 职场文书