Python3手动创建迭代器:从内置方法到自定义类的完整指南

阿澈
阿澈
发布时间:2026-10-13| 6人浏览过
原创

本文详细解析Python3中迭代器的原理与实现。介绍如何利用内置iter()和next()函数遍历序列,并通过while循环结合StopIteration异常处理实现迭代。重点演示如何手动构建自定义迭代器类,通过实现__iter__和__next__方法控制迭代逻辑,包括平方运算及终止条件的具体代码示例。

迭代器基本概念

迭代器是能够遍历列表、字典、字符串等序列对象,甚至包括自定义对象的一种特殊对象。其核心机制在于记录当前迭代元素的位置,确保遍历过程从首个元素单向推进至末尾,不支持回滚或反向迭代。

实现迭代器依赖两个核心方法:iter() 和 next()。

对于序列对象,可以直接调用 iter() 函数生成对应的迭代器对象,随后使用 next() 函数逐个获取迭代器中的元素。

内置迭代器的使用

通过 for 循环进行迭代操作。


S = 'PYTHON'
IT = iter(S)
for it in IT:
  print(it)

运行输出结果如下:

P Y T H O N

使用 next() 函数手动迭代。


S = 'PYTHON'
IT = iter(S)
print(next(IT))
print(next(IT))
print(next(IT))
print(next(IT))
print(next(IT))
print(next(IT))

运行输出结果如下:

P Y T H O N

在使用 next() 进行迭代时,若调用次数超过迭代器内元素总数,将触发 StopIteration 异常。基于此特性,可结合 while 循环与 try-except 结构捕获该异常,从而模拟 for 循环的完整迭代流程。


S = 'PYTHON'
IT = iter(S)
while True:
  try:
    print(next(IT))
  except StopIteration:
    break

P Y T H O N

手动构建自定义迭代器

手动构建迭代器类。

若需将自定义类作为迭代器使用,必须在类中实现 __iter__() 和 __next__() 两个方法。__iter__() 返回一个特殊的迭代器对象(通常返回自身),该对象需实现 __next__() 方法,并通过抛出 StopIteration 异常来标识迭代结束。__next__() 方法(Python 3中)负责返回下一个迭代值。以下示例定义了一个迭代器类,接收初始数值,每次迭代返回前一次结果的平方值,当计算结果大于 9999999999999 时抛出异常终止迭代。利用该类对初始值 2 进行平方迭代测试。


class IT_SQUARE:
  def __init__(self, x):
    self.x = x

  def __next__(self):
    self.x = self.x ** 2
    if self.x > 9999999999999:
      raise StopIteration
    
    else:
      return self.x

  def __iter__(self):
    return self
 
IT1 = IT_SQUARE(2)
 
while True:
  try:
    print(IT1.__next__())
  except StopIteration:
    break

运行输出结果:

4 16 256 65536 4294967296

总结

总结。

以上内容介绍了Python3中手动创建迭代器的实例代码,旨在帮助读者理解迭代器机制。如有疑问欢迎留言,小编会及时回复。感谢对本站的支持!若本文对您有帮助,欢迎转载,请注明出处,谢谢!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。