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重新引入被覆盖的自带function
Jul 16 Python
python写xml文件的操作实例
Oct 05 Python
Python探索之创建二叉树
Oct 25 Python
Python字符串格式化%s%d%f详解
Feb 02 Python
高效使用Python字典的清单
Apr 04 Python
Python使用gRPC传输协议教程
Oct 16 Python
django 环境变量配置过程详解
Aug 06 Python
python实现数据清洗(缺失值与异常值处理)
Dec 02 Python
解决torch.autograd.backward中的参数问题
Jan 07 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
Feb 21 Python
基于python连接oracle导并出数据文件
Apr 28 Python
pycharm 配置svn的图文教程(手把手教你)
Jan 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
php另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
Docker配置PHP开发环境教程
2016/12/21 PHP
HR vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
2007/08/31 Javascript
JS 表单验证大全
2011/11/23 Javascript
JavaScript高级程序设计 读书笔记之九 本地对象Array
2012/02/27 Javascript
js利用prototype调用Array的slice方法示例
2014/06/09 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
jQuery页面弹出框实现文件上传
2017/02/09 Javascript
关于Angularjs中跨域设置白名单问题
2018/04/17 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
2018/11/05 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
实现高性能javascript的注意事项
2019/05/27 Javascript
Python上传package到Pypi(代码简单)
2016/02/06 Python
python 实现删除文件或文件夹实例详解
2016/12/04 Python
利用python实现数据分析
2017/01/11 Python
Python与Java间Socket通信实例代码
2017/03/06 Python
Python+PIL实现支付宝AR红包
2018/02/09 Python
使用Python在Windows下获取USB PID&amp;VID的方法
2019/07/02 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
应届毕业生个人自荐信范文
2013/11/30 职场文书
2014学年自我鉴定
2014/02/23 职场文书
反对邪教标语
2014/06/30 职场文书
英文感谢信格式
2015/01/21 职场文书
员工自我工作评价
2015/03/06 职场文书
趣味运动会新闻稿
2015/07/17 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
一文帮你理解PReact10.5.13源码
2021/04/03 Javascript