美文网首页
python学习笔记-生成器和迭代器

python学习笔记-生成器和迭代器

作者: 一位在路上的phper | 来源:发表于2018-03-14 17:51 被阅读0次

    生成器:

    在python中,一边循环一边计算的机制,称为生成器:generator
    生成器不会把所有结果全部保存在内存中,而是保存生成的计算规则,每次迭代的时候返回一个计算出来的值,直到遇到Stoplteration异常结束。

    创建生成器:

    • 生成器表达式:
      通过和列表生成式相同的语法来生成,唯一不同只是把列表生成式的[]换成()。例:
    #生成列表
    L=[x*x for x in range(10)]
    #生成生成式
    g=(x*x for x in range(10))
    
    • 生成器函数:
      若函数存在关键字yeild,那么该函数就是一个generator函数。例:
    #生成斐波那契数列的生成器
    def fib():
        a,b=0,1
        while True:
            yield b
            temp=b
            b=a+b
            a=temp
    

    yield和return与generator之间的关系:

    • 在一个generator中若没有return,则默认执行到函数完毕时候返回StopIteration
    • 函数执行遇到return,直接抛出Stoplteration且return返回值就是Stoplteration的错误信息。

    生成器的操作:

    • next()
      前面我们说了,生成器保存的是计算出下一个生成值的算法,那么怎么获取生成的下一个值呢,用next()函数来获取生成器的下一个值,当计算出最后一个元素后,若继续调用,则会报StopIteration的错误。

    • for
      因为生成器也是一个可迭代对象Interable

    迭代器

    可以直接作用于for循环的对象统称为可迭代对象Iterable
    可以被next()调用并不断返回下一个值的对象称为迭代器Iterator

    迭代器就是可迭代对象,可迭代对象不一定是迭代器,比如list、dict、set是可迭代对象,但不是迭代器。但是list...等可迭代对象可以通过itor()函数转化为迭代器

    相关文章

      网友评论

          本文标题:python学习笔记-生成器和迭代器

          本文链接:https://www.haomeiwen.com/subject/vsnfqftx.html