当前位置:首页 > Python > 正文

Python迭代器实现教程 - 从入门到精通

Python迭代器实现教程

迭代器是Python中用于遍历集合元素的重要概念。本教程将带你了解迭代器的原理、实现方法以及实际应用。

什么是迭代器?

在Python中,迭代器是一个可以记住遍历位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有元素被访问完结束。

迭代器的工作原理

Python迭代器必须实现两个特殊方法:

  • __iter__() - 返回迭代器对象本身
  • __next__() - 返回集合的下一个元素,如果没有元素则抛出StopIteration异常

创建自定义迭代器

下面是一个简单的迭代器实现示例:


class MyRange:
    def __init__(self, start, end):
        self.current = start
        self.end = end
    
    def __iter__(self):
        return self
    
    def __next__(self):
        if self.current < self.end:
            value = self.current
            self.current += 1
            return value
        else:
            raise StopIteration()

# 使用自定义迭代器
my_range = MyRange(1, 5)
for num in my_range:
    print(num)
        

迭代器的优势

内存高效

迭代器一次只处理一个元素,不需要在内存中存储整个数据集

通用接口

所有迭代器使用相同的接口,简化了遍历操作

无限序列

可以创建表示无限序列的迭代器

无限序列迭代器示例


class Fibonacci:
    def __init__(self):
        self.prev = 0
        self.curr = 1
    
    def __iter__(self):
        return self
    
    def __next__(self):
        value = self.prev
        self.prev, self.curr = self.curr, self.prev + self.curr
        return value

# 生成斐波那契数列
fib = Fibonacci()
for i in range(10):
    print(next(fib))
        

迭代器 vs 可迭代对象

特性 迭代器 可迭代对象
定义 实现了__iter__和__next__方法的对象 实现了__iter__方法的对象
状态 记住迭代位置 不保存状态
使用 直接使用 需要调用iter()方法获取迭代器

实际应用场景

  1. 处理大型数据集(避免一次性加载到内存)
  2. 数据库查询结果的分批处理
  3. 生成无限序列(如斐波那契数列)
  4. 实现自定义数据结构的遍历

掌握迭代器是理解Python高级特性(如生成器)的基础,希望本教程对你有所帮助!

发表评论