gpt4 book ai didi

python - 与迭代器相比,生成器有什么好处?

转载 作者:行者123 更新时间:2023-12-04 14:31:39 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
Difference between Python Generators vs Iterators



生成器在 Python 中似乎很重要,时不时地向它们添加新功能等等。

据我所知,你总是可以使用带有迭代器接口(interface)的对象来代替生成器。 (通常)更好的简洁性是生成器的唯一好处还是我错过了什么?

最佳答案

是的,迭代器是一种更通用的结构,你可以用生成器做的任何事情都可以用迭代器来完成。

然而,生成器是一种非常好的工具,可以以非常干净简洁的方式表达某些想法,迭代器会变得很麻烦。

例如,这是一个简单的函数:

def count_to(m):
n = 0
while n <= m:
yield n
n += 1

好,易于。这与迭代器相同:
class CountTo:
def __init__(self, m):
self.m = m
self.n = 0
def __iter__(self):
return self
def next(self):
if self.n <= self.m:
cur, self.n = self.n, self.n + 1
return cur
else:
raise StopIteration()

一个是 5 行,另一个是 12 行。生成器非常简洁地表达了迭代过程,而迭代器用显式维护的状态和样板代码对其进行了混淆。

许多 Python 的哲学都基于可读性和简单性。与此保持一致,我认为生成器为大量需要迭代器的任务提供了更好的界面。是的,迭代器更强大,但生成器的语法优势当然不容忽视。

关于python - 与迭代器相比,生成器有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12766436/

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