生成器,一定情况下可以节省很多空间

比如:

>>> b = (x for x in range(10))>>> b<generator object <genexpr> at 0x02A17120>   这就是一个生成器,

占的内存空间要比列表小得多

需要取值的话,可以用next()函数,或者__ next__()方法,比如取上面的b的值:

>>> next(b)0>>> b.__next__()1>>> next(b)2>>> b.__next__()3>>>……

Ps:当然也可以使用for遍历b的值

生成器的另外一种写法和应用:

斐波那契数列是说后面一个数始终是前面两个数的和,比如:1,1,2,3,5,8,13,21……,可以使用下面的方式来创建这样的一组数:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def createNum():print("start----------------")a,b = 0,1for i in range(1000):#只要函数里面有yield这个关键字,就表示这个函数是一个生成器yield b               a,b = b,a+bprint("stop--------")

a = createNum()

走第一次next(a),上面这个函数的执行步骤:

1、 执行print(“start----------------”)

2、 a = 0, b = 1

3、 第一次循环,走到yield b,打印一个b出来,当前是1,遇到yield,程序会停止往下运行

4、 走第二次next(a),程序继续执行,从刚才停止的位置yield b的下面开始,也就是执行:a,b = b,a+b,此时b=0+1=1,然后进行第二次for循环,又一次执行到yield b,打印b的值为1,又一次停止运行。

5、 再次走next(a),重复上面的步骤,打印2出来

6、 直到for循环完毕

这个生成器的作用就是说你可以事先定义一个可以生成很多斐波那契数列的数值的一个函数,这个函数占用空间很小,到需要用的时候,再用next函数去生成,需要多少个就next多少次

另外,还有一种情况,可以完成两个函数交叉调用:

def test1():                  #定义一个带有yield None的生成器while True:print(“----111------”)yield Nonedef test2():             #定义另外一个带有yield None的生成器while True:print(“----222------”)yield Nonea = test1()         #创建两个生成器对象b = test2()def test():           #定义一个函数,调用生成器对象while True:a.__next__()b.__next__()#调用test
test()

结果:

----111----------222----------111----------222----------111----------222----------111----------222------……

Python生成器的用法,使用生成器灵活的生成斐波那契数列相关推荐

  1. python生成斐波那契数列通项公式_Python生成器实现斐波那契数列

    比如,斐波那契数列:1,1,2,3,5,8,13,21,34.... 用列表生成式写不出来,但是我们可以用函数把它打印出来: def fib(number): n, a, b = 0, 0, 1 wh ...

  2. Python:生成斐波那契数列(Fibonacci)

    问题:斐波那契数列是由 0, 1, 1, 2, 3, 5, 8-构成.请编写一个Fib类,Fib(10)表示数列的前10个元素,print Fib(10) 可以打印出数列的前 10 个元素,len(F ...

  3. Python程序模拟手工推算考虑兔子寿命的斐波那契数列

    开学第一课:拜托,一定不要这样问Python问题 中国大学MOOC"Python程序设计基础"免费学习地址 推荐图书: <Python程序设计(第3版)>,(ISBN: ...

  4. Python代码实战(初级篇)————7、斐波那契数列

    题目要求 使用python实现斐波那契数列 题目分析 斐波那契数列有这样的规律: 题目代码实现 方法一: def fib(n):a, b = 1, 1for i in range(n - 1):a, ...

  5. Python——使用生成器生成斐波那契数列

    首先使用常规方法 def fib(n):a,b,counter=0,1,0while True:if counter>n:returnprint(a,end=" ")a,b= ...

  6. python 利用递归算法来完成计算乘阶、斐波那契数列、汉诺塔

    一.求一个整数的阶乘: 1.常用的迭代方法写法: def jc(n):result = nfor i in range(1, n):result *= ireturn resultnu = int(i ...

  7. Python中斐波那契数列的四种写法

    在这些时候,我可以附和着笑,项目经理是决不责备的.而且项目经理见了孔乙己,也每每这样问他,引人发笑.孔乙己自己知道不能和他们谈天,便只好向新人说话.有一回对我说道,"你学过数据结构吗?&qu ...

  8. python 斐波那契数列 yield_Python中的yield到底是个什么鬼?

    Python大数据分析 记录 分享 成长 相信你已经不止一次在函数中看到关键词,它起着什么作用?返回什么?和又有着什么区别呢?这篇文章将会揭开的神秘面纱,并给出最浅显易懂的例子. 关键字做了什么? 如 ...

  9. python斐波那契数列函数,python—函数进阶-斐波那契数列

    上次说到生成器的调用next(),这样很不方便,需要手动调,我们一般是循环着调,while ,for都可以 a = (i for i in range(5)) for i in a: print(i) ...

最新文章

  1. 关于YOLO算法的备忘
  2. 一位产品总监打算这样管国家:首先得让大家交得起税。
  3. Ubuntu中给eclipse和android studio添加桌面快捷图标
  4. 时间序列异常检测机制的研究
  5. “才子进销存”新一代真正基于互联网(Internet)的进销存分销管理软件
  6. npm install 时候报错 gifsicle@5.2.0 postinstall: `node lib/install.js`
  7. CSS和JS引用图片(资源)的路径问题
  8. LeetCode题解——Reverse Integer
  9. 用c语言在Clion平台编写system(“cls“)清屏函数无效甚至异常解决方法。
  10. 射频识别技术漫谈(26)——Felica的文件系统
  11. 2022五一数学建模C题思路分享
  12. 修复This is probably not a problem with npm. There is likely additional logging output above.依赖问题
  13. *-面对困境,莫言放弃----给学习中遇到困境的学员们
  14. 那些年啊,那些事——一个程序员的奋斗史 ——72
  15. win10的远程桌面控制
  16. qpsk的映射过程_QPSK实验报告
  17. 2017年大数据 云计算 物联网发展趋势
  18. 国风频频出圈!品牌如何借势发力?小红书数据查询3招玩转国风
  19. 云服务器ECS_云主机_服务器托管_弹性计算-阿里云
  20. 买量洞察与渠道评估,助力营销决策优化

热门文章

  1. ionic + cordova 配置和开发过程中的一些问题
  2. 大学生一定记得要做的十八件事情
  3. Javascript模板引擎handlebars使用实例及技巧
  4. SSH框架--Struts的故事
  5. 【学习笔记】13、标准数据类型—元组
  6. 【VC基础】 6、VC条件定价
  7. 【转】后勤自动过帐(OBYC)详细配置说明
  8. 【QM-04】Inspection Characteristic(检验特征)
  9. 浅谈ATP检查中的“确认可用部分数量”(二)
  10. Mule与Servicemix比较