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

匿名函数

 

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

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

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

 

格式:

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

 

我们演示一下看看:

 

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

 

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

x,y是形式参数

x+y是函数体内容

 

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

返回x和y中较大值

 

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

 

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

 

函数的递归

 

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

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

 

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

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

 

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

直到先要求a(1)

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

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

 

这个函数可以这样写:

 

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

 

有个经典的Fibonacci数列问题

 

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

 

讲的是这样一个故事:

 

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

 

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

 

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

 

他做了如下的假设:  

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

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

3、兔子没有死亡发生。  

 

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

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

 

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

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

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

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

 

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

 

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

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从零开始系列连载(17)——Python特色数据类型(函数)(下)

 

使用到了递归的方法!

 

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

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

 

下课

 

人生苦短,我选Python

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

 

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

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