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脚本
Apr 05 Python
python 示例分享---逻辑推理编程解决八皇后
Jul 20 Python
Python遍历目录中的所有文件的方法
Jul 08 Python
django模板语法学习之include示例详解
Dec 17 Python
Python3的介绍、安装和命令行的认识(推荐)
Oct 20 Python
Django的models中on_delete参数详解
Jul 16 Python
Python绘制股票移动均线的实例
Aug 24 Python
python多线程案例之多任务copy文件完整实例
Oct 29 Python
python3.8.1+selenium实现登录滑块验证功能
May 22 Python
一篇文章搞懂python的转义字符及用法
Sep 03 Python
一篇文章教你用python画动态爱心表白
Nov 22 Python
python学习之panda数据分析核心支持库
May 07 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中变量及部分适用方法
2008/03/27 PHP
关于页面优化和伪静态
2009/10/11 PHP
php绘图之在图片上写中文和英文的方法
2015/01/24 PHP
php截取字符串函数分享
2015/02/02 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
深入理解PHP中的count函数
2016/05/31 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
详解php用static方法的原因
2018/09/12 PHP
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
2013/01/04 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
原生javascript实现简单的datagrid数据表格
2015/01/02 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
AngularJS 应用模块化的使用
2018/04/04 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
vue如何截取字符串
2019/05/06 Javascript
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python实现多线程采集的2个代码例子
2014/07/07 Python
Python实现字符串逆序输出功能示例
2017/06/24 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
python中@contextmanager实例用法
2021/02/07 Python
纽约著名的服装辅料来源:M&J Trimming
2017/07/26 全球购物
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
电子商务专业学生的自我鉴定
2013/11/28 职场文书
高分子材料与工程专业个人求职信
2013/12/15 职场文书
企业趣味活动方案
2014/08/21 职场文书
身份证丢失证明
2015/06/19 职场文书
致三级跳运动员加油稿
2015/07/21 职场文书
《圆的周长》教学反思
2016/02/17 职场文书
pygame面向对象的飞行小鸟实现(Flappy bird)
2021/04/01 Python