2023学年完整公开课版函数式编程_第1页
2023学年完整公开课版函数式编程_第2页
2023学年完整公开课版函数式编程_第3页
2023学年完整公开课版函数式编程_第4页
2023学年完整公开课版函数式编程_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

函数式编程教师:亢华爱北京信息职业技术学院商务数据分析与应用专业教学资源库目录lambdaContents行函数reduce()filter()map()1PARTlambdalambdalambda是匿名函数,也叫行内函数。具体用法如下:lambda只是一个表达式,函数体比def简单很多。lambda表达式运行起来像一个函数。关于lambda函数的用途有两点说明。对于单行函数,使用lambda可以省去定义函数的过程,让代码更加精简。在非多次调用函数的情况下,lambda表达式即用即得,可以提高性能。0102lambda使用lambda匿名函数的例子如下:注意:如果是for...in...if(后面将会讲到)能做的,最好不要选择lambda。2PARTreduce()reduce()使用reduce(fUnc(),Z),可以把一个函数作用在一个序列上累计计算。其效果如下:Python中的reduce内建函数fimc()是一个二元操作函数,它将一个数据集合Z(可以是列表或元组等)中的所有数据进行下列操作:用函数flmc()对集合Z中的第1、第2个数据进行运算,将得到的结果再与Z中的第三个数据运算,以此循环。reduce()【例】:执行上面的程序,输出1+2+3+4+5+6+7的结果即28。reduce就是将add(x,y)函数作用在(1,2,3,4,5,6,7)上,即:1给X,2赋给y,再将计算结果(1+2)赋给x,3赋给y;再次将计算结果((1+2)+3)赋给X,4赋给y,依此类推。reduce()当然,也可以用lambda的方法,更为简单reduce在Python2.x中可以直接使用,但在python3.0以后,已经不在built-infunction中,要使用就必须先导入:fromfunctoolsimportreduce。3PARTfilter()filter()如在一个list中删掉偶数只保留奇数,代码如下:再如把一个序列中的空字符串删掉,代码如下:filter()接收一个函数和一个序列,并把传入的函数依次作用于每个元素,然后根据返回值True或者False,决定保留还是丢弃该元素。可见,用filter()这个高阶函数时,关键在于正确地实现一个“筛选”函数。filter()用于过滤序列01filter()filter()函数还可以实现行函数功能。用filter()函数改写如下:filter()在Python2.7中直接返回一个列表。但在Python3.x中,filter()是一个容器,返回时需要用list调用才显示数据。例如:024PARTmap()map()【例】比较map和filter:说明:map返回的是func作用后的结果数据,而filter是通过func作用筛选出作用域的数据。map(func,S)将传入的函数func依次作用到序列S的每个元素,并把结果作为新的序列返回。函数func在S域上遍历,在Python3.x中map()是一个容器,返回时需要用list调用才显示数据,显示的是func作用后的结果数据。map()例如:map还可以接受多个参数的函数。map()、filter()、reduce()三个函数循环要比for、while循环快得多。5PART行函数行函数行函数也叫列表解析或列表推导式,格式如下:【例】将列表中能被2整除的元素提取出来并加上2:也可用一行代码实现:行函数例如:列表推导式(listcomprehension)是利用其他列表创建新列表(类似于数学术语中的集合推导式)的一种方法。它的工作方式类似于for循环。行函数如果只想打印出那些能被3整除的平方数,只需要通过添加一个if部分在推导式中就可以完成:也可以增加更多的for语句部

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论