答案:在Python3中创建迭代器可通过实现__iter__()和__next__()方法的类或使用生成器函数。1. 自定义迭代器类需在__iter__()返回自身,__next__()定义取值逻辑并在结束时抛出StopIteration异常;2. 生成器函数用yield返回迭代器,更简洁。

在 Python3 中创建迭代器,主要通过实现类中的 __iter__() 和 __next__() 方法。只要一个对象具备这两个方法,就可以被用于 for 循环或 next() 函数遍历。
1. 使用类创建自定义迭代器
定义一个类,让它支持迭代操作:
class MyIterator:
def __init__(self, start=0, end=5):
self.current = start
self.end = end
def __iter__(self):
return self
def __next__(self):
if self.current >= self.end:
raise StopIteration
value = self.current
self.current += 1
return value使用示例
it = MyIterator(1, 4)
for i in it:
print(i) # 输出: 1, 2, 3
说明:
- __iter__ 返回迭代器对象本身(通常 return self)
- __next__ 定义每次获取下一个值的逻辑
- 当没有更多元素时,必须抛出 StopIteration 异常来结束迭代
2. 使用生成器函数创建迭代器
更简单的方式是使用 yield 关键字定义生成器函数,它会自动返回一个迭代器:
立即学习“Python免费学习笔记(深入)”;
ECTouch是上海商创网络科技有限公司推出的一套基于 PHP 和 MySQL 数据库构建的开源且易于使用的移动商城网店系统!应用于各种服务器平台的高效、快速和易于管理的网店解决方案,采用稳定的MVC框架开发,完美对接ecshop系统与模板堂众多模板,为中小企业提供最佳的移动电商解决方案。ECTouch程序源代码完全无加密。安装时只需将已集成的文件夹放进指定位置,通过浏览器访问一键安装,无需对已有
def my_generator(start, end):
current = start
while current < end:
yield current
current += 1
使用示例
gen = my_generator(1, 4)
for i in gen:
print(i) # 输出: 1, 2, 3
优点:代码更简洁,无需手动管理状态和异常。
3. 使用内置函数创建迭代器
Python 提供了一些可以直接生成迭代器的函数:
- iter():将可迭代对象转为迭代器
- enumerate()、zip() 等也返回迭代器
my_list = [10, 20, 30] it = iter(my_list) print(next(it)) # 10 print(next(it)) # 20
基本上就这些。你可以根据需要选择类方式、生成器或内置函数来创建迭代器。










