欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    (本科)第10章函数式编程 ppt课件.ppt

    • 资源ID:15303968       资源大小:103KB        全文页数:15页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    (本科)第10章函数式编程 ppt课件.ppt

    课程主讲人:第10章 函数式编程 第第10章章 函数式编程函数式编程 主讲主讲 夏敏捷夏敏捷什么是函数式编程 函数函数式编程Functional Programming,是一种编程的基本风格,也就是构建程序结构的方式。函数式编程虽然也可以归结到面向过程的程序设计,但其思想更接近数学计算,也就是可以使用表达式编程。 函数式编程的一个特点就是,允许把函数本身函数本身作为参数参数传入另一个函数,还允许返回一个函数一个函数。Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。10.1 高阶函数 1. 1. 高阶函数概念高阶函数概念高阶函数它是可以将其他函数作为参数或返回结果的函数。例如,定义一个简单的高阶函数:def add(x, y, f): return f(x) + f(y) add(-5, 9, abs) #abs(-5) + abs(9)add(65, 66, chr) #AB10.1 高阶函数 1. 1. 返回函数返回函数高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。def calc_sum(*args): ax = 0 for n in args: ax = ax + n return axdef lazy_sum(*args): def sum(): ax = 0 for n in args: ax = ax + n return ax return sum f = lazy_sum(1, 3, 5, 7, 9) ffunction lazy_sum.sum at0 x101c6ed90 f()25当当lazy_sum返回函数返回函数sum时,相关参数和变量都保存在返回的函数中,这种称为时,相关参数和变量都保存在返回的函数中,这种称为闭包闭包(Closure)闭包 y=ax+b y=ax+b 编写函数计算编写函数计算y y的值。的值。 def line_conf(a,b): def line(x): return a*x+b return line line_one=line_conf(3,4) line_two=line_conf(4,6) line_one(5) #结果19 line_two(5) #结果26上述代码中line_conf是外部函数,a、b是它的参数。line(x)是内部函数,x是它的参数。在line(x)的内部通过外部函数的a、b确定闭包最终形式。闭包具有提过代码可复用性的作用。10.2 Python函数式编程常用的函数 1 1map()map()函数函数map()是 Python 内置的高阶函数,有2个参数,一个是函数f(),一个是列表list,并通过把函数f()依次作用在 list 的每个元素上,得到一个新的新的 list list作为map()函数的返回结果。def f(x): return x*xlist1= map( f, 1, 2, 3, 4, 5, 6, 7, 8, 9 )print (list(list1)1, 4, 9, 10, 25, 36, 49, 64, 8110.2 Python函数式编程常用的函数 1 1map()map()函数函数map() 不仅仅可以处理只包含数值的 list,事实上它可以处理包含任意类型的 list,只要传入的函数f可以处理这种数据类型。list1= 2, 4, 6, 8, 10list2 = map(lambda x: x * 2, list1)for e in list2: print(e,end=,) # 结果是:4,16,36,64,100, list1= china, japan,hello list2 = map(lambda x: x.title(), list1) #title()首字母大小for e in list2: print(e,end=,) # 结果是:China,Japan,Hello,10.2 Python函数式编程常用的函数 2 2reduce()reduce()函数函数reduce()函数接收的参数和map()类似,一个函数f(),一个列表list,但reduce()传入的函数f()必须接收两个两个参数。reduce()对列表list的每个元素反复调用函数f(),并返回最终结果值。from functools import reducedef f(x, y): return x + yreduce()还可以接收第3个可选参数,作为计算的初始值。reduce(f, 1, 3, 5, 7, 9, 100)结果将变为125。reduce(f, 1, 3, 5, 7, 9)结果为25。10.2 Python函数式编程常用的函数 3 3filter()filter()函数函数filter()函数接收一个函数f()和一个list,这个函数f()的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。def is_odd(x): return x % 2 = 1利用filter()过滤掉偶数:filter(is_odd, 1, 4, 6, 7, 9, 12, 17) #结果 1, 7, 9, 17def is_odd(x): if x % 2 = 1: return True else: return False10.2 Python函数式编程常用的函数 4 4zip()zip()函数函数zip()函数以一系列列表作为参数,将列表中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。a = 1,2,3b = 4,5,6zipped = zip(a,b)for element in zipped: print(element)(1, 4)(2, 5)(3, 6)10.2 Python函数式编程常用的函数 5 5sorted()sorted()函数函数Python内置的 sorted()函数可对list进行排序:sorted(36, 5, 12, 9, 21) #默认升序,所以结果是5, 9, 12, 21, 36但 sorted()也是一个高阶函数,Python3.7中它的格式如下:sorted(list,key=None,reverse=False)key指定的函数将作用于list的每个元素上,并根据key函数返回的结果排序。sorted(36, 5, -12, 9, -21,key=abs) #结果是5, 9, -12, -21, 36students = (john, A, 15), (jane, B, 12), (dave,B, 10)sorted(students, key=lambda s: s2) #按照年龄来排序10.2 Python函数式编程常用的函数 5 5sorted()sorted()函数函数Python内置的 sorted()函数可对list进行排序:sorted(36, 5, 12, 9, 21) #默认升序,所以结果是5, 9, 12, 21, 36但 sorted()也是一个高阶函数,Python3.7中它的格式如下:sorted(list,key=None,reverse=False)key指定的函数将作用于list的每个元素上,并根据key函数返回的结果排序。sorted(36, 5, -12, 9, -21,key=abs) #结果是5, 9, -12, -21, 36students = (john, A, 15), (jane, B, 12), (dave,B, 10)sorted(students, key=lambda s: s2) #按照年龄来排序10.3 迭代器迭代器是访问集合内元素的一种方式。迭代器是访问集合内元素的一种方式。迭代器对象从序列(列表、元组、字典、集合)的第一个元素开始迭代器对象从序列(列表、元组、字典、集合)的第一个元素开始访问,直到所有的元素都被访问一遍后结束。迭代器不能访问,直到所有的元素都被访问一遍后结束。迭代器不能回退回退,只,只能能往前往前进行迭代。进行迭代。使用内建函数使用内建函数iter(iterable)iter(iterable)可以获取序列的迭代器对象,方法如下:可以获取序列的迭代器对象,方法如下: 迭代器对象迭代器对象 = iter(= iter(序列对象序列对象) )使用使用next()next()函数可以获取迭代器的下一个元素,如下:函数可以获取迭代器的下一个元素,如下: next( next(迭代器对象迭代器对象) )list = china,Japan, 333it = iter(list) #获取迭代器对象print(next(it)print(next(it)print(next(it)chinaJapan33310.4普通编程方式与函数式编程的对比【例10-2】以普通编程方式计算列表元素中正数之和。list =2, -6, 11, -7, 8, 15, -14, -1, 10, -13, 18sum = 0for i in range(len(list): if list i0: sum += list iprint(sum)from functools import reducelist =2, -6, 11, -7, 8, 15, -14, -1, 10, -13, 18sum = filter(lambda x: x0, list)s = reduce(lambda x,y: x+y, sum)print(s)通过对比,函数式编程具有如下特点:(1)代码更简单代码更简单。数据,操作和返回值都放在一起。(2) 没有循环体,几乎没有临时变量没有循环体,几乎没有临时变量,也就不用分析程序的流程和数据变化过程了。(3)代码用来实现做什么,而不是怎么去做。

    注意事项

    本文((本科)第10章函数式编程 ppt课件.ppt)为本站会员(春哥&#****71;)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开