【发布时间】:2017-04-06 22:06:22
【问题描述】:
我在下面有一个程序,我试图理解迭代器和生成器之间的区别。我知道生成器是迭代器和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)
【问题讨论】:
-
您是否已经阅读了有关该主题的几个答案?例如stackoverflow.com/questions/2776829/…
-
另外,我发现这篇文章很有趣:oreilly.com/ideas/…
-
@idjaw - 我从您提供的链接中获取了这个示例。
标签: python python-3.x