Python3手动创建迭代器:从内置方法到自定义类的完整指南
本文详细解析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中手动创建迭代器的实例代码,旨在帮助读者理解迭代器机制。如有疑问欢迎留言,小编会及时回复。感谢对本站的支持!若本文对您有帮助,欢迎转载,请注明出处,谢谢!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









