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实现登陆知乎获得个人收藏并保存为word文件
Mar 16 Python
python中字典(Dictionary)用法实例详解
May 30 Python
简单谈谈Python中的反转字符串问题
Oct 24 Python
Python Numpy 数组的初始化和基本操作
Mar 13 Python
django 发送手机验证码的示例代码
Apr 25 Python
Jupyter中直接显示Matplotlib的图形方法
May 24 Python
Python列表生成式与生成器操作示例
Aug 01 Python
python3 线性回归验证方法
Jul 09 Python
PyTorch中topk函数的用法详解
Jan 02 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
Jan 21 Python
python环境下安装opencv库的方法
Mar 05 Python
Python  Asyncio模块实现的生产消费者模型的方法
Mar 01 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+mysql分页代码详解
2008/03/27 PHP
PHP 解决utf-8和gb2312编码转换问题
2010/03/18 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
用js的for循环获取radio选中的值
2013/10/21 Javascript
使用javascript实现雪花飘落的效果
2015/01/13 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
angular.bind使用心得
2015/10/26 Javascript
jquery实现左右无缝轮播图
2020/07/31 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
AngularJs ng-route路由详解及实例代码
2016/09/14 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
React实践之Tree组件的使用方法
2017/09/30 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
2020/11/09 jQuery
Python生成器generator用法示例
2018/08/10 Python
Python 实现一个计时器
2020/07/28 Python
HTML5拖拉上传文件的简单实例
2017/01/11 HTML / CSS
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
给老婆的搞笑检讨书
2014/01/12 职场文书
医德医风演讲稿
2014/05/20 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
幼儿园教师辞职信
2019/06/21 职场文书
Redis如何一键部署脚本
2021/04/12 Redis
JS监听Esc 键触发事键
2021/04/14 Javascript
如何用python反转图片,视频
2021/04/24 Python
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang