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获取远程图片大小和尺寸的方法
Mar 26 Python
Python 爬虫学习笔记之多线程爬虫
Sep 21 Python
python对json的相关操作实例详解
Jan 04 Python
Android分包MultiDex策略详解
Oct 30 Python
Python判断中文字符串是否相等的实例
Jul 06 Python
Python3编码问题 Unicode utf-8 bytes互转方法
Oct 26 Python
python re正则匹配网页中图片url地址的方法
Dec 20 Python
Python Pywavelet 小波阈值实例
Jan 09 Python
python飞机大战pygame游戏之敌机出场实现方法详解
Dec 17 Python
简单了解pytest测试框架setup和tearDown
Apr 14 Python
pytorch实现查看当前学习率
Jun 24 Python
python 爬取英雄联盟皮肤并下载的示例
Dec 04 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
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
容易被忽略的JS脚本特性
2011/09/13 Javascript
javascript中如何处理引号编码&amp;#034;
2013/08/15 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
table insertRow、deleteRow定义和用法总结
2014/05/14 Javascript
js在IE与firefox的差异集锦
2014/11/11 Javascript
DOM基础教程之事件对象
2015/01/20 Javascript
浅谈javascript 迭代方法
2015/01/21 Javascript
jquery实现表单验证并阻止非法提交
2015/07/09 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
Js apply方法详解
2017/02/16 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
Python实现基于HTTP文件传输实例
2014/11/08 Python
python 网络爬虫初级实现代码
2016/02/27 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
python图的深度优先和广度优先算法实例分析
2019/10/26 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
CSS3新属性transition-property transform box-shadow实例学习
2013/06/06 HTML / CSS
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
前端实现打印图像功能
2019/08/27 HTML / CSS
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
医大实习自我鉴定
2013/12/07 职场文书
工程安全员岗位职责
2014/03/09 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
海飞丝广告词
2014/03/20 职场文书
学生安全责任书
2014/04/15 职场文书
生物技术专业求职信
2014/06/10 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
平安建设汇报材料
2014/12/29 职场文书