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 相关文章推荐
Python3基础之输入和输出实例分析
Aug 18 Python
python计算圆周率pi的方法
Jul 11 Python
如何优雅地改进Django中的模板碎片缓存详解
Jul 04 Python
带你认识Django
Jan 15 Python
pandas 时间格式转换的实现
Jul 06 Python
TensorFlow查看输入节点和输出节点名称方式
Jan 04 Python
开启Django博客的RSS功能的实现方法
Feb 17 Python
Python实现RabbitMQ6种消息模型的示例代码
Mar 30 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
Apr 08 Python
python如何写try语句
Jul 14 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
Dec 08 Python
详解Django的MVT设计模式
Apr 29 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 CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
2013/06/06 PHP
ajax+php控制所有后台函数调用
2015/07/15 PHP
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
js查找父节点的简单方法
2008/06/28 Javascript
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
eclipse如何忽略js文件报错(附图)
2013/10/30 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
JavaScript中获取HTML元素值的三种方法
2016/06/20 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
基于JavaScript中标识符的命名规则介绍
2018/01/06 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
python获取糗百图片代码实例
2013/12/18 Python
python复制文件代码实现
2013/12/23 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
2016/09/19 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
python序列化与数据持久化实例详解
2019/12/20 Python
python PIL模块的基本使用
2020/09/29 Python
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
美国牛仔品牌:True Religion
2018/11/16 全球购物
Book Depository欧盟:一家领先的国际图书零售商
2019/05/21 全球购物
优秀员工自荐书
2013/12/19 职场文书
英语教师岗位职责
2014/03/16 职场文书
毕业生欢送会主持词
2014/03/31 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
爱晚亭导游词
2015/02/09 职场文书
解决goland 导入项目后import里的包报红问题
2021/05/06 Golang
Spring Boot 启动、停止、重启、状态脚本
2021/06/26 Java/Android
Nginx禁止ip访问或非法域名访问
2022/04/07 Servers
如何解决flex文本溢出问题小结
2022/07/15 HTML / CSS