有勇气的牛排博客

Python 迭代器Iterator介绍

有勇气的牛排 33 Python 2025-07-30 22:17:10

1 前言

1.1 定义

  • 迭代器是一个可以被逐个遍历(迭代)的对象。
  • 必须实现 迭代器协议:
    • __iter__():返回迭代器对象自身。
    • __next__():返回容器的下一个元素,没有元素师抛出 StopIteration
  • 迭代器是 惰性求值 的:数据在需要时才生成,不一次性存储内存。

1.2 特定

  • 一次性:迭代器遍历一次后就不能后退,需要重新创建。
  • 节省内存:不需要一次性存储所有元素。
  • 状态保持:保存当前迭代位置。

2 基本案例

2.1 使用内置函数 iter() 创建迭代器

# -*- coding: utf-8 -*- num_list = [1, 2, 3] it = iter(num_list) # 转为迭代器对象 print(next(it)) # 1 print(next(it)) # 2 print(next(it)) # 3 print(next(it)) # StopIteration

image.png

2.2 自定义迭代器类

# -*- coding: utf-8 -*- class MyIterator: def __init__(self, data): self.data = data self.index = 0 def __iter__(self): return self # 返回迭代器对象本身 def __next__(self): if self.index >= len(self.data): raise StopIteration value = self.data[self.index] self.index += 1 return value for num in MyIterator([1, 2, 3, 4, 5]): print(num)

3 常见场景

  • 大数据读取(避免一次性加载到内存)
  • 文件逐行读取
  • 流式数据处理

评论区

×
×