查看原文
其他

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

2017-11-08 王大伟 Python爱好者社区

作者:王大伟

Python爱好者社区唯一小编

博客:https://ask.hellobi.com/blog/wangdawei


前言

前文传送门:

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

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

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

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

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特色数据类型(函数)(中)


匿名函数


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

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

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


格式:

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


我们演示一下看看:



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

x,y是形式参数

x+y是函数体内容


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

返回x和y中较大值



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


函数的递归


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

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


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


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

直到先要求a(1)

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

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


这个函数可以这样写:



有个经典的Fibonacci数列问题



讲的是这样一个故事:


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


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


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


他做了如下的假设:  

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

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

3、兔子没有死亡发生。  


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

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


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

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

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

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




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

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。


我们写成函数是这样的:



使用到了递归的方法!


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

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


下课


人生苦短,我选Python

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


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

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



接下来是福利时间!!!

连载看的不过瘾?快来听小编的Python从零开始免费直播课啦~

点击文末阅读原文立即报名


加微信直播管理员微信:xtechday(请注明:从零开始) ,随后管理员会将你拉入到交流群中。  

Python爱好者社区历史文章大合集

Python爱好者社区历史文章列表(每周append更新一次)

福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:

关注后在公众号内回复“课程”即可获取:

1.崔老师爬虫实战案例免费学习视频。

2.丘老师数据科学入门指导免费学习视频。

3.陈老师数据分析报告制作免费学习视频。

4.玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。

5.丘老师Python网络爬虫实战免费学习视频。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存