在 Python 中,迭代器(Iterator)和生成器(Generator)是用于处理可迭代对象的两个重要概念。

迭代器(Iterator):

迭代器是一个对象,它实现了两个方法:__iter__() 和 __next__()。通过这两个方法,你可以遍历迭代器的元素。迭代器保存了当前迭代的状态,因此可以从上一次迭代停止的地方继续。

示例:
# 创建一个简单的迭代器
class MyIterator:
    def __init__(self, start, end):
        self.current = start
        self.end = end

    def __iter__(self):
        return self

    def __next__(self):
        if self.current >= self.end:
            raise StopIteration
        else:
            self.current += 1
            return self.current - 1

# 使用迭代器
my_iterator = MyIterator(1, 5)
for num in my_iterator:
    print(num)

生成器(Generator):

生成器是一种特殊类型的迭代器,它可以通过函数来创建。生成器使用 yield 关键字来产生值,而不是 return。每次调用生成器的 __next__() 方法时,它会执行函数,直到遇到 yield 语句,返回值并保留函数的状态,下次调用时会从上一次 yield 的地方继续执行。

示例:
# 创建一个简单的生成器
def my_generator(start, end):
    current = start
    while current < end:
        yield current
        current += 1

# 使用生成器
gen = my_generator(1, 5)
for num in gen:
    print(num)

生成器的好处是它更简洁,占用的内存较少,因为它只在需要时产生值。生成器也常用于处理大数据集。

总的来说,迭代器和生成器都是用于处理可迭代对象的工具,它们可以帮助你更有效地处理大量数据或者按需产生数据,而不必一次性把所有数据加载到内存中。


转载请注明出处:http://www.zyzy.cn/article/detail/13268/Python3