迭代器和生成器

Posted henji1266

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代器和生成器相关的知识,希望对你有一定的参考价值。

一、迭代器

  --迭代器是拥有了__iter__和__next__方法的一个类实例化的对象,for循环调用__next__方法来完成迭代器的循环。

  --迭代器是生成数据的方式方法,不是生产数据的结果,list upleset是保存数据的集合,是数据的结果

  --迭代器的好处:节省了内存中保存列表、元祖等容器的空间,并且在调用时完成循环的目的。

  --实现方式:

    Class A:

      def __init__()

        代码块:计数器的初始化等

      def __iter__():

        return self  # 返回一个可迭代对象

      def __next__():

        实现数据的依次提,在此处增加一个计数器。

二、生成器

  --生成器是特殊的迭代器,都是拥有__iter__()和__next__()方法

  --生成器的生成方式

    定义一个函数:

      把return 换成yield,yield与return的不同,return会直接返回函数的返回值并结束函数,yield会返回一个返回值,并且会在此处进行暂停,直到执行next方法后,程序才会继续往下执行。

    该函数其实是定义了一个生成器模板,是用来生成生成器的,效果类似于一个类,当调用该函数时,并不是返回一个返回值,而是返回了一个生成器对象,当该生成器调用next函数时(next(生成器对象)),才会把yield后面的值进行返回。

  --生成器可以理解为一个特殊的函数,只不过用yield来代替return,且调用函数时返回的是一个生成器,也即是一个迭代器,一个生成数据的方式,而不是一个数据结果,必须对该迭代器对象调用next方法,才会返回值。

  --实现方式:

    def xx():    技术图片

      while True:

        yield a

        xxx代码块

  技术图片

三、生成器实现多任务(协程)

  --使用yield方法,使子函数暂停,然后返回主函数,执行另一个子函数,再用yield,使函数返回,然后交替执行任务。技术图片

以上是关于迭代器和生成器的主要内容,如果未能解决你的问题,请参考以下文章

5.迭代器和生成器

迭代器和生成器

Python迭代器和生成器

Python/迭代器和生成器

迭代器和生成器

python的迭代器和生成器