版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《Python开发技术应用》44匿名函数及高阶函数什么是匿名函数使用Python写一些执行脚本时,使用匿名函数可以省去定义函数的过程,让代码更加精简。对于一些抽象的,不会别的地方再复用的函数,有时候给函数起个名字也挺麻烦,使用匿名函数不需要考虑命名的问题,并且可以让代码更容易理解。匿名函数使用关键字lambda来定义,语法格式:lambdaargs:expression匿名函数和add()等价的匿名函数:>>>f1=lambdax,y:x+y假如我们需要一个加法函数:>>>defadd(x,y)...returnx+y匿名函数的主要意义在于函数速写,它也常常在高阶函数中作为参数来使用。如果不给它分配名称,那么就需要立即调用,因为它是匿名的,所以在后续代码中无法访问,就不能再调用。>>>(lambdax,y:x+y)(3,4)7匿名函数高阶函数高阶函数的定义:函数的参数(同时也是函数要处理的对象)是其他函数。常用的高阶函数包括map()、reduce()、filter()、sorted()等。map()函数原型:
map(function,iterable,...)function:一个函数的元数据引用iterable:一个或多个序列map()会根据提供的函数对指定序列做映射,即以参数序列中的每一个元素调用function函数,返回一个map对象,可以转换成列表,也可以直接迭代访问。map()函数假设我们有一个函数f(x)=x2,要把这个函数作用在一个列表中的各个元素上,用高阶函数map()来实现:map(f(x),list)123456789[]list:149162536496481[]return:
f(x)=x2
deffoo(x):returnx*xm1=map(foo,[1,2,3,4,5,6,7,8,9])print(m1)print(list(m1))执行结果:<mapobjectat0x000002DD762DB8C8>[1,4,9,16,25,36,49,64,81]map()函数如果map()函数的处理函数需要多个参数,那么对应的数据序列也要有多个,例如计算矩形面积需要长和宽相乘,那么就需要一个序列提供长、另一个序列提供宽。>>>list(map(lambdax,y:x*y,[5,12,8],[3,5,6]))[15,60,48]map()函数中的处理函数可以是匿名函数,因此这个计算二次方的例子可以写成以下形式:>>>list(map(lambdax:x*x,[1,2,3,4,5,6,7,8,9]))[1,4,9,16,25,36,49,64,81]map()函数reduce()也是一个常用的高阶函数,由functools模块提供,函数原型:reduce(func,iterable[,initializer])
func是用于处理的函数,该函数要求两个参数和一个返回值;iterable为可迭代对象;initializer是可选的,为初始参数;返回值是函数计算结果。函数将一个数据集合(列表,元组等)中的所有数据进行下列操作:用传给reduce中的函数func(有两个参数)先对集合中的第1、2个元素进行操作,得到的结果再与第三个数据用func函数运算,以此类推,最后得到一个结果。可以认为:reduce(f,[x1,x2,x3,x4])等价于f(f(f(x1,x2),x3),x4)reduce()函数functoools.reduce(f(x),list)123456[]list:return
f(x,y)=x×y2624120720>>>importfunctools>>>functools.reduce(lambdax,y:x*y,range(1,7))720reduce()函数filter()函数主要用于过滤序列,它有以下特性:filter()接收一个函数和一个序列,函数必须是判断型函数,返回True或False;filter()把传入的函数依次作用于序列中的每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。函数原型:filter(function,iterable)function:判断函数iterable:为可迭代对象返回值是一个filter对象,可以转换为列表,也可以用for循环访问。filter()函数下面举个例子,在一个list中,删掉偶数,只保留奇数:>>>defis_odd(n):...returnn%2==1>>>list(filter(is_odd,[1,2,4,5,6,9,10,15]))[1,5,9,15]再举例把一个序列中的空字符串删掉:>>>defnot_empty(s):...returnsands.strip()>>>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 暖通故障诊断技术方法
- 2026年人工智能技术与应用发展前沿知识测试题库
- 2026年外贸业务操作与风险管理专业认证题库
- 2026年人力资源专家高级招聘面试技巧模拟题
- 2026年文学爱好者必学古代文学史重点知识点测试题
- 2026年人力资源管理人才招聘与评估专业题库
- 2026年营养学试题集健康饮食与营养搭配指南
- 2026年中医药学基础理论与药材识别模拟题
- 煤矿基本单位如何制定防止偷盗的制度
- 2026年人工智能技术机器学习与深度学习理论题库
- 马年猜猜乐【马的成语33题】主题班会
- 工程抢险劳务合同协议
- 中等长度导管维护流程与健康宣教
- 渔船合伙投资协议书
- 7下英语单词表人教版
- 涉密人员保密培训
- 攻坚克难追求卓越主题班会
- (八省联考)2025年高考综合改革适应性演练 英语试卷(含答案详解)+听力音频+听力原文
- 新媒体运营全年规划
- 国防装备全寿命周期管理
- 2024年江西省中考生物·地理合卷试卷真题(含答案)
评论
0/150
提交评论