当前位置: 首页 > 网络应用技术

Python系列发电机和迭代器

时间:2023-03-05 21:59:22 网络应用技术

  如果对象同时实现了迭代方法和下一个方法,则它是迭代器。迭代方法用于返回迭代器本身,下一个方法返回容器中的下一个值。当所有元素均为返回,执行下一个方法,并将抛出停止例外。

  它是一个可以记住的对象。迭代器从集合的第一个元素开始,直到访问所有元素。迭代器只能向前移动而不撤退,这意味着迭代器只能执行一次完整的迭代,并且不能像列表这样的无限时间重复迭代。

  有两种基本方法:iter()方法和next()方法。他们将自己调用内部迭代方法和下一个方法。

  迭代器主要用于以下场景:对元素的随机访问不关心元素,并且不能预先预测元素的数量。

  方法iTer返回了一个迭代器,该迭代器包含下一步方法的对象,并且在调用此方法时不提供任何参数。

  该对象需要提供下一个()方法,要么返回迭代器中的下一个项目,要么将stopteities异常归结以结束迭代。

  迭代对象(例如列表和金属组)可用于创建迭代器。以下内容仅以列表为例来解释

  结果:

  结果:

  可以说,迭代对象包括迭代器。因此,迭代器可以在迭代对象时以for循环传播,也可以使用next()函数进行遍历。

  结果:

  结果:

  实现迭代器后,我们需要记录当前的迭代状态,然后基于当前迭代状态生成下一个数据。为了达到当前记录状态并使用next()函数供迭代使用。我们可以使用更简洁的生成器。

  发电机本质上是一个函数。它记得函数主体返回时的位置,还记录了程序执行的上下文。发电机函数的第二次(或n时间调用)将跳到悬挂在函数上的函数上的位置。

  结果:

  结果:

  结果:

  当第一次启动发电机时,参数只能无效

  您可以通过迭代对象的产量将A转换为发电机A

  结果: