我寻求建议/澄清:在哪里使用生成器更好,在哪里使用迭代器。
假设我们有一个迭代器:
class MyIter1:
def __init__(self, num):
self.num = num
def __iter__(self):
return self
def __next__(self):
if self.num > 0:
self.num -= 1
return self.num
raise StopIteration
还有 for 循环:
for i in MyIter1(10):
print(i)
在循环中,MyIter1调用 y 方法__next__ 并使用它返回的值。
还有一个生成器:
def gen(num):
for x in range(num):
if num > 0:
num -= 1
yield num
并对其进行相同的 for 循环:
for i in gen(10):
print(i)
在循环中,gen调用ynext()并使用它返回的值。
以下是问题:
这两种方法有何不同(在我看来它们大致相同),最好在哪里使用它们以及在什么情况下它们会有显着差异(最好有例子)。
PS我对生成器很熟悉,也了解它们的工作原理,它们是用于流式数据处理的,但是我不完全明白有什么区别,因为这也可以用迭代器来完成,只需在它的__next__()时候调用它是必须的。
使用生成器的示例:
您将如何使用迭代器来实现这一点?