当前位置: 首页 > 面试题库 >

Python的生成器和迭代器之间的区别

盖成弘
2023-03-14
问题内容

迭代器和生成器有什么区别?有关何时使用每种情况的一些示例会有所帮助。


问题答案:

iterator是一个更笼统的概念:其类具有next方法(__next__在Python 3中)和具有__iter__方法的任何对象return self

每个生成器都是一个迭代器,但反之亦然。生成器是通过调用具有一个或多个yield表达式(yield在Python 2.5及更早版本中为语句)的函数而构建的,并且该函数是满足上一段对的定义的对象iterator

当你需要一个具有某些复杂的状态维护行为的类时,或者想要暴露除next(和__iter____init__)之外的其他方法时,你可能想使用自定义迭代器,而不是生成器。通常,一个生成器(有时,对于足够简单的需求,一个生成器表达式)就足够了,并且它更容易编写代码,因为状态维护(在合理范围内)基本上是由挂起和恢复帧“为你完成的”。

例如,生成器例如:

def squares(start, stop):
    for i in range(start, stop):
        yield i * i

generator = squares(a, b)

或等效的生成器表达式(genexp)

generator = (i*i for i in range(a, b))

将需要更多代码来构建为自定义迭代器:

class Squares(object):
    def __init__(self, start, stop):
       self.start = start
       self.stop = stop
    def __iter__(self): return self
    def next(self): # __next__ in Python 3
       if self.start >= self.stop:
           raise StopIteration
       current = self.start * self.start
       self.start += 1
       return current

iterator = Squares(a, b)

但是,当然,有了类,Squares你可以轻松地提供其他方法,即

    def current(self):
       return self.start

如果你对应用程序中的此类额外功能有实际需求。



 类似资料:
  • 问题内容: 我们可以使用遍历a 或a 或a 。但是只能用于遍历a ,不能遍历a 。为什么? 我知道主要的区别在于,使用迭代器,我们只能在一个方向上运行,而我们可以在两个方向上运行。还有其他区别吗?和任何优势了? 问题答案: 差异在Listdocerator的Javadoc中列出 您可以 向后迭代 随时获取迭代器。 随时添加新值。 在这一点上设置一个新值。

  • 本文向大家介绍python生成器,可迭代对象,迭代器区别和联系,包括了python生成器,可迭代对象,迭代器区别和联系的使用技巧和注意事项,需要的朋友参考一下 生成器,可迭代对象,迭代器之间究竟是什么关系? 用一幅图来概括: 1.生成器 定义生成器 方式一: 方式二: 定义成功后,我们可以利用next()访问生成器下一个元素 但一般用for循环遍历 2.迭代器 任何实现了__iter__和__ne

  • 本文向大家介绍老生常谈Python之装饰器、迭代器和生成器,包括了老生常谈Python之装饰器、迭代器和生成器的使用技巧和注意事项,需要的朋友参考一下 在学习python的时候,三大“名器”对没有其他语言编程经验的人来说,应该算是一个小难点,本次博客就博主自己对装饰器、迭代器和生成器理解进行解释。 为什么要使用装饰器 什么是装饰器?“装饰”从字面意思来谁就是对特定的建筑物内按照一定的思路和风格进行

  • 这篇内容挺多的,而且比内容不好理解。或许新手看完后,还会一脸懵逼,不过这是正常的,如果你看完后,是迷糊的,那么建议你继续学习后面的内容,等学完,再回来看几次。 注:这也是我第二次修改内容没有改过的章节。 目录

  • 问题内容: 这两个接口之间的确切区别是什么?是否有过使用效益?如果有人可以详细说明,将不胜感激。 问题答案: 查看该接口的Java API规范,对以下两者之间的区别进行了说明: 迭代器与枚举有以下两种不同: 迭代器允许调用者在迭代期间使用定义明确的语义从基础集合中删除元素。 方法名称已得到改进。 底线是,既和会给连续元素,但以这样的方式得到改善,从而该方法名是短,并且具有附加的方法。这是一个并排比

  • 本文向大家介绍python 生成器和迭代器的原理解析,包括了python 生成器和迭代器的原理解析的使用技巧和注意事项,需要的朋友参考一下 一、生成器简介 在python中,生成器是根据某种算法边循环边计算的一种机制。主要就是用于操作大量数据的时候,一般我们会将操作的数据读入内存中处理,可以计算机的内存是比较宝贵的资源,我认为的当要处理的数据超过内存四分之一的大小时就应该使用生成器。 二、生成器有