Python从零开始系列连载(28)——Python特色数据类型(函数)(下)

浏览: 5797

前言

前文传送门:

Python从零开始系列连载(1)——安装环境

Python从零开始系列连载(2)——jupyter的常用操作(上)

Python从零开始系列连载(3)——jupyter的常用操作(中)

Python从零开始系列连载(4)——jupyter的常用操作(下)

Python从零开始系列连载(5)——Python的基本数据类型(上)

Python从零开始系列连载(6)——Python的基本数据类型(中)

Python从零开始系列连载(7)——Python的基本数据类型(中二)

Python从零开始系列连载(8)——Python的基本数据类型(下)

Python从零开始系列连载(9)——Python的基本运算和表达式(上)

Python从零开始系列连载(10)——Python的基本运算和表达式(中)

Python从零开始系列连载(11)——Python的基本运算和表达式(中二)

Python从零开始系列连载(12)——Python的基本运算和表达式(下)

Python从零开始系列连载(13)——Python程序的基本控制流程(上)

Python从零开始系列连载(14)——Python程序的基本控制流程(中) 

Python从零开始系列连载(15)——Python程序的基本控制流程(中二)

Python从零开始系列连载(16)——Python程序的基本控制流程(下)

Python从零开始系列连载(17)——Python特色数据类型(列表)(上)

Python从零开始系列连载(18)——Python特色数据类型(列表)(中)

Python从零开始系列连载(19)——Python特色数据类型(列表)(下)

Python从零开始系列连载(20)——Python特色数据类型(元组)(上)

Python从零开始系列连载(21)——Python特色数据类型(元组)(下)

Python从零开始系列连载(22)——Python特色数据类型(字典)(上)

Python从零开始系列连载(23)——Python特色数据类型(字典)(下)

Python从零开始系列连载(24)——Python特色数据类型(集合)(上)

Python从零开始系列连载(25)——Python特色数据类型(集合)(下)

Python从零开始系列连载(26)——Python特色数据类型(函数)(上)

Python从零开始系列连载(27)——Python特色数据类型(函数)(中)


匿名函数

匿名函数,匿名指的是我们不知道这个函数的名字

当我们使用时候,用lambda来声明匿名函数

这种匿名函数是没有名字的,是临时使用的


格式:

函数对象名 = lambda 形式参数:表达式


我们演示一下看看:


图片.png


这里用匿名函数代替了add()函数的功能

x,y是形式参数

x+y是函数体内容


匿名函数也可以有条件分支语句:

返回x和y中较大值


图片.png


小建议:当函数较为复杂时,不建议匿名函数,不太好写而且结构难理解


函数的递归


递归指的是一种直接或者间接调用自身的算法

它的本质是将问题分解为同类型的子问题


还记得高中学数列时候有公式是这样的么:

图片.png


当我们去求a(n)时候,先要去求a(n-1),然后为了求a(n-1),就先要求a(n-2),以此类推

直到先要求a(1)

然后我们求出a(1),就能返回求出a(2)直到求出a(n)

----------------------end---------------------------


这个函数可以这样写:


图片.png


有个经典的Fibonacci数列问题


图片.png


讲的是这样一个故事:


1201年,意大利数学家Fibonacci(斐波那契)发现了以他自己的名字命名的数列---Fibonacci数列。

他是在研究兔子的生长、繁殖的规律中发现这一数列的。

他对数列的研究是从一对刚刚出生的小兔子(雌雄一对)开始计算在n个月后将会有多少只兔子

他做了如下的假设:  

1、新出生的小兔子在一个月的时间里发育为成年兔子;  

2、每对成年兔子每月繁殖一对小兔子(雌雄一对);  

3、兔子没有死亡发生。  


接下来我们来看会产生一组什么样的数呢?  

我们用Fn代表n个月后兔子的对数。

因为从一对新生的兔子开始,所以,F0=1,F1=1。

这一对兔子在第二个月末生出另一对小兔子,从而F2=1+1=2。

在第三个月末,第一对兔子将生下又一对小兔子,所以F3=2+1=3。

我们用如下的表格表示前10个月每个月初兔子的数量:


图片.png


由此可知,从第一个月开始以后每个月的兔子总数是:

1,1,2,3,5,8,13,21,34,55,89,144,233…  

这就是著名的Fibonacci(斐波那契)数列


这个数列具有这样的特点:前两项均为1,从第三项起,每一项都是其前两项的和

即F0=F1=1,当n>1时,Fn+2=Fn+1+Fn。


我们写成函数是这样的:


图片.png


使用到了递归的方法!


今天作业是自己跟着操作一遍~

自己不敲代码永远学不会写代码


下课


人生苦短,我选Python

未完待续,连载中......


现在还坚持再看连载学习的你们真的很棒棒!

入门部分已经学完大部分啦!加油


欢迎来听我的1小时快速入门Python课程(免费哦):https://edu.hellobi.com/course/234


下一篇:Python从零开始系列连载(29)——Python文件操作(上)

推荐 8
本文由 ID王大伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

19 个评论

深入浅出,绘声绘色,学起来毫无压力,像我这种没啥基础的人都兴趣盎然,两天看完了28课,谢谢作者,希望写出更多更好的东西。
感谢你的支持!
虽然有点点基础,但是还是愿意看你的视频,每天打开电脑第一件事情就是看你的视频有没有更新,希望能够快点更新并且身体还要保持健康!
虽然有点点基础,但是还是愿意看你的视频,每天打开电脑第一件事情就是看你的视频有没有更新,希望能够快点更新并且身体还要保持健康!
为啥不更新了
最近在备考 比较忙
还有视频? 跪求连接
11月初会有直播 一小时入门Python
支持,希望继续推出新的文章。
1小时快速入门Python:https://edu.hellobi.com/course/234
1小时快速入门Python:https://edu.hellobi.com/course/234
有个基础知识点忘了,if语句里面,给i赋值为什么要用两个等号呢
赋值是一个等号 两个等号是判断是否相等
老师,请问一下:我在输入Func lambda x,y:x+y 以后,为什么系统提示
File "<ipython-input-489-0e91e81d129c>", line 1
Func lambda x,y:x+y
^
SyntaxError: invalid syntax
Func lambda x,y:x+y不对吧
应该是func = 吧
Func lambda x,y:x+y不对吧
应该是func = 吧
对哦,少了个等号,犯低级错误了
老师,定义函数的时候return 和 print的用法有什么不同吗??
好文章永远不怕晚,我来了

要回复文章请先登录注册