[英]Python3 Iterators vs generators
我下面有一个程序,我试图理解迭代器和生成器之间的区别。我知道生成器是一个迭代器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)
您发布的两个示例是等效的。
生成器相对于迭代器(不是生成器)提供的主要优点是生成器使用更少的内存,可以更快,可以在无限流上使用。
使用迭代器时,将最终计算将要返回的所有项目,然后首先返回元素。
使用生成器时,在计算第二项之前返回第一个元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.