Python生成器实现斐波那契数列
2024-08-26 07:32:29
比如,斐波那契数列:1,1,2,3,5,8,13,21,34....
用列表生成式写不出来,但是我们可以用函数把它打印出来:
def fib(number):
n, a, b = 0, 0, 1
while n < number:
print(b)
a, b = b, a + b
n = n + 1
return 'OK!'
print(fib(5))
结果:
1
1
2
3
5
OK!
我们可以看出从第一个元素开始,推算出后续任意的元素。很像generator。
要把fib函数变成generator,只需要把 print(b)改为 yield b就可以了:
def fib(number):
n, a, b = 0, 0, 1
while n < number:
yield b
a, b = b, a + b
n = n + 1
return 'OK!' print(fib(5))#<generator object fib at 0x105606ca8>
注意:
这里难理解的就是generator和函数的执行流程是不一样的。
函数是顺序执行,遇到return语句或者最后一行函数语句就
返回。
注意:函数创建一次生成一个生成器,所以我们会将创建的生
成器赋值给一个变量。如果直接用函数本身这个生成器,
我们没用一次生成一个新的生成器对象,所以,我们一
般都将创建的生成器赋给一个变量。
generetor的函数,在每次调用 next()的时候执行,遇到
yield语句返回,再次执行时从上次返回的yield语句处继续
执行。
最新文章
- Hadoop Pig简介、安装、试用
- 【移动适配】移动Web怎么做屏幕适配(一)
- Choosing proper innodb_log_file_size
- android 获取前台进程
- Mysql 数据库的介绍
- 【IOS 开发】Object - C 语法 之 流程控制
- c#实战开发:以太坊钱包快速同步区块和钱包卡死解决方案 (三)
- docker 基础之监控
- 腾讯技术分享:GIF动图技术详解及手机QQ动态表情压缩技术实践
- 一个applicationContext 加载错误导致的阻塞解决小结
- getComputedStyle()用法详解
- WordPress版微信小程序2.2.0版发布
- PHPsocket、CURL、File_get_contents采集
- 未解决:长字符串含&hellip;
- python 豆瓣验证码识别总结
- asp.net MVC之Result过滤器浅析
- Zabbix 3.0编译安装
- C#跳转网页7种方法
- HDU 2159 FATE 完全背包
- Redis(七)-- SpringMVC整合Redis集群