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搜索及替换文件中文本的方法
May 22 Python
动感网页相册 python编写简单文件夹内图片浏览工具
Aug 17 Python
利用Python破解验证码实例详解
Dec 08 Python
python下载图片实现方法(超简单)
Jul 21 Python
Python 操作文件的基本方法总结
Aug 10 Python
Python排序搜索基本算法之堆排序实例详解
Dec 08 Python
浅谈dataframe中更改列属性的方法
Jul 10 Python
Python将json文件写入ES数据库的方法
Apr 10 Python
Python 70行代码实现简单算式计算器解析
Aug 30 Python
Tensorflow实现多GPU并行方式
Feb 03 Python
Django基础CBV装饰器和中间件
Mar 22 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 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 array_intersect()函数使用代码
2009/01/14 PHP
php空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
2010/07/17 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
jQuery通过点击行来删除HTML表格行的实现示例
2014/09/10 Javascript
JS实现文字掉落效果的方法
2015/05/06 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
javascript实现密码验证
2015/11/10 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
Emberjs 通过 axios 下载文件的方法
2019/09/03 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
Cpy和Python的效率对比
2015/03/20 Python
Python中用altzone()方法处理时区的教程
2015/05/22 Python
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
python中的tcp示例详解
2018/12/09 Python
解决Keras 自定义层时遇到版本的问题
2020/06/16 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
应用数学专业求职信
2014/03/14 职场文书
八荣八耻演讲稿
2014/09/15 职场文书
毕业横幅标语
2014/10/08 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
感恩的心主题班会
2015/08/12 职场文书
2019年浪漫婚礼证婚词
2019/06/27 职场文书
python playwright 自动等待和断言详解
2021/11/27 Python
《黑岩★★射手 DAWN FALL》BD发售宣传CM公开
2022/04/04 日漫
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript