gpt4 book ai didi

Python3 迭代器与生成器

转载 作者:行者123 更新时间:2023-12-01 03:32:19 26 4
gpt4 key购买 nike

我在下面有一个程序,我试图理解迭代器和生成器之间的区别。我知道生成器是一个迭代器和更多。我很欣赏生成器是生成迭代器的简短方式。但除了简洁之外,生成器还提供了一些迭代器没有提供的其他功能

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)

最佳答案

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

与迭代器(不是生成器)相比,生成器的主要优点是生成器使用更少的内存,速度更快,并且可以在无限流上使用。

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

使用生成器,第一个元素会在计算第​​二个元素之前返回。

关于Python3 迭代器与生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40755289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com