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的Tkinter编写登陆注册界面
Jun 30 Python
Python使用装饰器进行django开发实例代码
Feb 06 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
Feb 13 Python
5款Python程序员高频使用开发工具推荐
Apr 10 Python
Python向excel中写入数据的方法
May 05 Python
python tools实现视频的每一帧提取并保存
Mar 20 Python
python实现植物大战僵尸游戏实例代码
Jun 10 Python
使用django的ORM框架按月统计近一年内的数据方法
Jul 18 Python
keras打印loss对权重的导数方式
Jun 10 Python
python如何使用腾讯云发送短信
Sep 17 Python
使用豆瓣源来安装python中的第三方库方法
Jan 26 Python
利用python实时刷新基金估值(摸鱼小工具)
Sep 15 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
Zend 输出产生XML解析错误
2009/03/03 PHP
php学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
微信自定义分享php代码分析
2016/11/24 PHP
PHP设计模式之PHP迭代器模式讲解
2019/03/22 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
JsDom 编程小结
2011/08/09 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
2016/01/23 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
微信小程序 UI与容器组件总结
2017/02/21 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
springboot+vue实现文件上传下载
2020/11/17 Vue.js
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
[01:54]胎教DOTA2 准妈妈玩家现身中国区预选赛
2016/06/26 DOTA
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
使用CSS3的背景渐变Text Gradient 创建文字颜色渐变
2014/08/19 HTML / CSS
HTML5移动开发图片压缩上传功能
2016/11/09 HTML / CSS
Html5+CSS3+EL表达式问题小结
2020/12/19 HTML / CSS
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
电子狗项圈:eDog Australia
2019/12/04 全球购物
模范教师事迹材料
2014/02/10 职场文书
2014国培学习感言
2014/03/05 职场文书
2015年招聘工作总结
2014/12/12 职场文书
作文批改评语
2014/12/25 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers