python之 生成器-Generators

转自本人旧博客


title: 生成器-Generators
date: 2017-07-21 15:11:24
tags: python
categories: python


Generators(生成器)

  • 一种迭代器,但是只能对其迭代一次。
    • 因为它们并没有把所有的值存在内存中,而是在运行是生成值.
  • 通过遍历来使用
    • “for”循环
    • 传递转给任意可以进行迭代的函数和结构。(大多是以函数来实现)
  • 不返回一个值,而是yield一个值。

  • 生成器占很少的资源
  • eg:计算斐波那契数列的生成器:
    • 这种方式我们不用担心它会使用大量资源
      在这里插入图片描述

    • 这种方法也许会在计算很大的输入参数时,用尽所有的资源。
      [外链图片转存失败(img-KcFVgILF-1562596319905)(/img/python/generators/generators3.png)]

next()
  • 允许获取序列的下一个元素
    [外链图片转存失败(img-mtTrfgZm-1562596319906)(/img/python/generators/generators4.png)]

  • 在yield所有值后,next()触发了StopIteration的异常。但是在for循环时没有这个异常,因为for循环会自动捕捉到这个异常并停止调用next()

  • python内置数据类型也支持迭代的
    [外链图片转存失败(img-Wvq8XjTR-1562596319907)(/img/python/generators/generators5.png)]

    • str对象不是一个迭代器,它是一个可迭代对象。支持迭代,但不能直接对其进行迭代操作
    • 对其实施迭代:使用iter,它将根据一个可迭代对象返回一个迭代器对象
      在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值