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 Django连接MySQL数据库做增删改查
Nov 07 Python
python操作数据库之sqlite3打开数据库、删除、修改示例
Mar 13 Python
Python兔子毒药问题实例分析
Mar 05 Python
深入理解Python中的*重复运算符
Oct 28 Python
使用Eclipse如何开发python脚本
Apr 11 Python
python绘制中国大陆人口热力图
Nov 07 Python
Python实现将HTML转成PDF的方法分析
May 04 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
Jul 04 Python
在VS2017中用C#调用python脚本的实现
Jul 31 Python
Django实现发送邮件找回密码功能
Aug 12 Python
PyCharm第一次安装及使用教程
Jan 08 Python
python matplotlib中的subplot函数使用详解
Jan 19 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/06/04 PHP
php 变量定义方法
2009/06/14 PHP
PHP 图像尺寸调整代码
2010/05/26 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
javascript 节点排序 2
2011/01/31 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
利用jquery实现瀑布流3种案例
2016/09/18 Javascript
JQuery手速测试小游戏实现思路详解
2016/09/20 Javascript
JavaScript高仿支付宝倒计时页面及代码实现
2016/10/21 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
Python+微信接口实现运维报警
2016/08/27 Python
开源Web应用框架Django图文教程
2017/03/09 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
Python requests接口测试实现代码
2020/09/08 Python
python Paramiko使用示例
2020/09/21 Python
python调用摄像头的示例代码
2020/09/28 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
纯css3实现思维导图样式示例
2018/11/01 HTML / CSS
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
高中军训广播稿
2014/01/14 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
医院护士党的群众路线教育实践活动对照检查材料思想汇报
2014/10/04 职场文书