在Python中,迭代器(Iterator)是一个可以记住遍历位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完。迭代器只能往前不会后退。
要创建一个迭代器,你必须定义一个类,并实现两个特殊方法:__iter__()
和 __next__()
。
__iter__()
方法返回迭代器对象本身,通常在这个方法中,你可以进行一些初始化操作。__next__()
方法会返回下一个迭代的值。当没有更多的项时,它应该抛出StopIteration
异常来表示迭代完成。
例如,下面是一个简单的迭代器示例:
class SimpleIterator:
def __init__(self, limit):
self.limit = limit
self.current = 0
def __iter__(self):
return self
def __next__(self):
if self.current < self.limit:
item = self.current
self.current += 1
return item
else:
raise StopIteration
# 使用迭代器
it = SimpleIterator(5)
for i in it:
print(i)
输出结果为:
0
1
2
3
4
在Python中,许多内置容器类型如 list、tuple、dict 等都实现了迭代器协议,可以直接使用 for 循环进行遍历。这是因为它们内部实现了 __iter__()
和 __next__()
方法。
此外,Python 还提供了内置函数 iter()
和 next()
来帮助我们获取和使用迭代器。例如:
my_list = [1, 2, 3]
my_iter = iter(my_list)
print(next(my_iter)) # 输出 1
print(next(my_iter)) # 输出 2
print(next(my_iter)) # 输出 3
# print(next(my_iter)) # 抛出 StopIteration 异常
通过理解迭代器的概念,你可以更好地利用 Python 的迭代功能,编写更高效、更简洁的代码。