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中的select模块
Apr 23 Python
关于Python如何避免循环导入问题详解
Sep 14 Python
Python入门之三角函数atan2()函数详解
Nov 08 Python
python 用lambda函数替换for循环的方法
Jun 09 Python
查找python项目依赖并生成requirements.txt的方法
Jul 10 Python
11个Python3字典内置方法大全与示例汇总
May 13 Python
python中的单引号双引号区别知识点总结
Jun 23 Python
使用Python实现图像标记点的坐标输出功能
Aug 14 Python
python支付宝支付示例详解
Aug 22 Python
利用python计算时间差(返回天数)
Sep 07 Python
详解Django将秒转换为xx天xx时xx分
Sep 27 Python
Python实现封装打包自己写的代码,被python import
Jul 12 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
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
2017/02/08 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
javascript笔试题目附答案@20081025_jb51.net
2008/10/26 Javascript
javascript 函数使用说明
2010/04/07 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
使用jQuery清空file文件域的解决方案
2013/04/12 Javascript
ExtJS自定义主题(theme)样式详解
2013/11/18 Javascript
详解AngularJS的通信机制
2015/06/18 Javascript
javascript实现获取图片大小及图片等比缩放的方法
2016/11/24 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
webpack4 css打包压缩问题的解决
2018/05/18 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
python中使用enumerate函数遍历元素实例
2014/06/16 Python
17个Python小技巧分享
2015/01/23 Python
在Linux下调试Python代码的各种方法
2015/04/17 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
python输出pdf文档的实例
2020/02/13 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
TensorFlow的reshape操作 tf.reshape的实现
2020/04/19 Python
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
幼儿园中班教师寄语
2014/04/03 职场文书
大学生年度个人总结
2015/02/15 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
离婚起诉状范本
2015/05/19 职场文书
从事会计工作年限证明
2015/06/23 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server