有勇气的牛排博客
☰

Python 迭代器Iterator介绍

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

知止自律打卡-微信小程序APP
一款微信自律打卡小程序,支持自定义打卡项目、习惯记录、项目日记、专注计时与数据统计。自律打卡、学习打卡、读书打卡、健身打卡、运动打卡、减肥打卡、戒色打卡、养生打卡、戒烟、戒酒、戒熬夜等多种场景。万能打卡模板自由创建。可自定义每日打卡目标,记录习惯连续天数,可视化追踪成长进度。
了解产品详情 →
微信搜索「知止自律打卡」
知止自律打卡微信小程序

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 常见场景

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

评论区

×
×