5.2.3 map函数(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)

2024-08-10
| 19页
| 78人阅读
| 9人下载
普通

内容正文:

任务5.2 特殊函数 打印斐波那契数列 同学们,这一节,我们来讲一下特殊函数,主要是递归函数,匿名函数,map函数以及filter函数 5.2 特殊函数——打印斐波那契数列 【任务描述】 递归是编程语言中较难学的知识点,但小T不畏困难,想要通过斐波那契数列学习递归。斐波那契数列(Fibonacci Sequence),又称黄金分割数列,由数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例引入,故又称“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34。 5.2 特殊函数——打印斐波那契数列 【任务分析】 在数学上,斐波那契数列以递归的方法定义:F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n>=2,n∈N*),从定义可知,函数的每次调用都是对自己的调用。fib(n-1)+fib(n-2)就是调用了函数本身实现递归。递归的计算过程简述如下(假设n=3): (1)n=3,fib(3),判断为计算fib(3-1)+fib(3-2)。 (2)看fib(3-1),即fib(2),返回结果为1。 (3)看fib(3-2),即fib(1),返回结果也为1。 (4)计算第(1)步,结果为fib(n-1)+fib(n-2)=1+1=2,将结果返回。 5.2 特殊函数——打印斐波那契数列 递归函数 匿名函数 map()函数 filter()函数 reduce()函数 前面小节我们看到函数可以调用其他函数的函数实例。例如,函数A可以调用函数B,而函数 B 又可以调用函数 C。实际上,函数也可以调用它自己。调用自己的函数称为递归函数 5.2 特殊函数——打印斐波那契数列 5.2.1 递归函数 5.2.2 匿名函数 5.2.3 map()函数 5.2.4 filter()函数 5.2.5 reduce()函数 5.2.3 map函数 同学们,这一节,我们来讲一下特殊函数,主要是递归函数,匿名函数,map函数以及filter函数 2.2.3 map函数 map(function, iterable, ...) map()函数是Python的内置高阶函数,会根据提供的函数对指定序列做映射。其语法格式如下: (1)function:函数 (2)iterable:一个或多个序列 这个函数是将function应用于iterable中的每一个元素,并将结果以列表的形式返回。 map函数是Python内置的高阶函数,会根据提供的函数对指定序列做映射。所谓高阶函数就是把函数作为参数或者返回值的一类函数。 map函数形式如下:map(function, iterable, ...),function是指一个函数,iterable是指一个或多个序列。map函数就是将function应用于iterable的每一个元素,结果以列表的形式返回。 2.2.3 map函数 func=lambda x:x+2 result=map(func,[1,2,3,4,5]) print(list(result)) [3, 4, 5, 6, 7] 【例5-18】map()函数的使用。 我们来看一个例子,这里定义了一个匿名函数,并用变量func指向匿名函数的内存地址,同时又定义了一个map函数,里面两个参数,一个是匿名函数,一个是列表,根据map函数的定义,将func匿名函数分别作用于列表中的元素,而匿名函数的功能是把参数+2后,作为返回值返回。所以结果为返回一个列表,里面的值 为3,4,5,6,7。 2.2.3 map函数 边学边练: 利用map()函数,把用户输入的不规范的英文名字变为首字母大写、其他字母小写的规范名字。 5.2.4 filter函数 同学们,这一节,我们来讲一下特殊函数,主要是递归函数,匿名函数,map函数以及filter函数 5.2.4 filter函数 filter(function, iterable) filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表 (1)function:判断函数 (2)iterable:可迭代对象 filter函数的作用是接收一个函数func和一个list,函数func的作用是对每个元素进行判断,通过返回True或False来过滤掉不符合条件的元素,符合条件的元素组成新list。 filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。filter函数格式如下:filter(function, iterable) 这里的function是判断函数,iterable是可迭代对象。filter函数的作用是接收一个函数func和一个list,函数func的作用是对每个元素进行判断,通过返回True或False来过滤掉不符合条件的元素,符合条件的元素组成新list。 5.2.4 filter函数 func=lambda x:x%2 result=filter(func,[1,2,3,4,5]) print(list(result)) [1,3,5] 2 3 4 5 1 1 3 5 return x%2 seq function newList True filter 【例5-19】filter()函数的使用。 相比map()的全部保留,filter()只会留下符合要求的部分。filter()函数接收两个参数,第一个为函数,第二个为序列。序列的每个元素作为参数传递给函数进行判断,然后返回True或False,最后将返回True的元素存放到新列表中,如下图5-6所示。 我们来看一个实例,在这里首先定义一个匿名函数,匿名函数的作用是对传入的参数对2求余。同时又定义一个filter函数,其中的过滤函数为func,可迭代对象为列表,里面的元素为1,2,3,4,5。 filter函数用匿名函数分别作用于列表,匿名函数的作用是对2求余,所以奇数的值为1,偶数为0,转为布尔值为true,False,所以最终奇数被保留下来。 好了同学们,特殊函数这一节我们就讲到这里。 5.2.5 reduce()函数 同学们,这一节,我们来讲一下特殊函数,主要是递归函数,匿名函数,map函数以及filter函数 5.2.5 reduce() reduce(function, iterable[, initializer]) reduce()函数将一个数据集合(链表、元组等)中的所有数据进行下列操作:先用reduce()中的函数function(有两个参数)对集合中的第1、2个元素进行操作,然后将得到的结果与第三个数据用function函数运算,最后得到一个结果。reduce()函数的语法格式如下: (1)function:函数,有两个参数。 (2)iterable:可迭代对象。 (3)initializer:可选,初始参数 filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。filter函数格式如下:filter(function, iterable) 这里的function是判断函数,iterable是可迭代对象。filter函数的作用是接收一个函数func和一个list,函数func的作用是对每个元素进行判断,通过返回True或False来过滤掉不符合条件的元素,符合条件的元素组成新list。 5.2.4 filter函数 15 15 【例5-20】reduce()函数的使用。 from functools import reducedef add(x, y) : # 两数相加 return x + ysum1 = reduce(add, [1,2,3,4,5]) # 计算列表和:1+2+3+4+5sum2 = reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 语句创建匿名函数print(sum1)print(sum2) 我们来看一个实例,在这里首先定义一个匿名函数,匿名函数的作用是对传入的参数对2求余。同时又定义一个filter函数,其中的过滤函数为func,可迭代对象为列表,里面的元素为1,2,3,4,5。 filter函数用匿名函数分别作用于列表,匿名函数的作用是对2求余,所以奇数的值为1,偶数为0,转为布尔值为true,False,所以最终奇数被保留下来。 好了同学们,特殊函数这一节我们就讲到这里。 5.2.6 任务实现——打印斐波那契数列 大家好,这一节我们讲解如何用python的递归函数来实现斐波那契数列的打印 16 5.2.6 任务实现——打印斐波那契数列 【任务描述】 斐波那契数列(Fibonacci Sequence),又称黄金分割数列,由数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例引入,故又称“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34。请用递归函数实现以上数列的打印。 5.2.6 任务实现——打印斐波那契数列 【任务分析】 为了明确递归的过程,下面简述一下计算过程(假设n=3) (1)n=3,fib(3),转化为计算fib(3-1)+fib(3-2)。 (2)先看fib(3-1),即fib(2),返回结果为1。 (3)再看fib(3-2),即fib(1),返回结果也为1。 (4)最后计算第(1)步,结果为fib(n-1)+fib(n-2)=1+1=2,将结果返回。 5.2.6 任务实现——打印斐波那契数列 def fib_recur(n): assert n >= 0 if n in (0, 1): return n return fib_recur(n - 1) + fib_recur(n - 2) for i in range(20): print(fib_recur(i), end=" ") 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 【例5-20】reduce()函数的使用。 下面我们来看python实现该任务的具体代码,首先定义一个递归函数fib_recur(n),函数体里面assert是一个断言,直接用于判断一个表达式,在表达式条件为 false 的时候触发异常。 断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况。这个递归函数体内设置断言,是要满足n>=0的条件,如果不满足,直接触发异常,if n in(0,1) return n,该语句判断n的值,当n的值为0,函数的返回值为0,当n的值为1的时候,返回值为1。当大于等于2的时候,则返回fib_recur(n - 1) + fib_recur(n - 2),即调用函数本身,也即开始递归,层层下去,n-1,n-2,n-3直到n的值为1。然后再层层上去,得到fib_recur(n)的值。这里的for I in range(20): print(fib_recur(i), end=“ ”)语句是一个循环语句,依次遍历0,1,2,3,4…到19,并计算相应的值,进行输出。最后的输出结果为斐波那契数列的前20项 19 $$

资源预览图

5.2.3 map函数(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
1
5.2.3 map函数(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
2
5.2.3 map函数(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
3
5.2.3 map函数(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
4
5.2.3 map函数(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
5
5.2.3 map函数(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。