Python3迭代器与发电机



我有一个程序,我试图了解迭代器和生成器之间的区别。我知道生成器是迭代器和 more。我感谢发电机是生成迭代器的简短方式。但是,除了简洁之外

def squares(start, stop):
    for i in range(start, stop):
        yield i * i
generator = squares(1, 10)
print(list(generator))

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

iterator = Squares(1, 10)
l = [next(iterator) for _ in range(1,10)]
print(l)

您发布的两个示例是等效的。

发电机比迭代器所提供的主要优点(不是生成器)是发电机使用较少的内存,可以更快,并且可以在无限流上使用。

当您使用迭代器时,最终将计算所有要返回的项目,然后返回元素的第一个。

使用发电机,在计算第二个项目之前,第一个元素将返回。

最新更新