迭代器是Python中非常重要的概念之一,它是一种可以遍历容器(如列表、元组、字典、集合等)中元素的对象。Python中的迭代器实现了迭代器协议,即实现了__iter__()
和__next__()
两个方法。其中,__iter__()
方法返回迭代器对象本身,__next__()
方法返回容器中的下一个元素,如果没有下一个元素,则抛出StopIteration
异常。
下面是一个简单的迭代器示例,它可以遍历一个列表中的元素:
class MyIterator:
def __init__(self, data):
self.index = 0
self.data = data
def __iter__(self):
return self
def __next__(self):
if self.index >= len(self.data):
raise StopIteration
result = self.data[self.index]
self.index += 1
return result
my_list = [1, 2, 3, 4, 5]
my_iter = MyIterator(my_list)
for i in my_iter:
print(i)
在这个示例中,我们定义了一个名为MyIterator
的迭代器类,它接受一个列表作为参数,并实现了__iter__()
和__next__()
方法。在__iter__()
方法中,我们返回迭代器对象本身,__next__()
方法中,我们返回列表中的下一个元素。如果没有下一个元素,我们抛出StopIteration
异常。
在主程序中,我们创建了一个MyIterator
对象,并使用for
循环遍历了列表中的所有元素。在每次迭代中,for
循环会自动调用迭代器对象的__next__()
方法,直到抛出StopIteration
异常为止。
需要注意的是,一旦迭代器遍历完容器中的所有元素,它就不能再次使用,必须重新创建一个新的迭代器对象才能再次遍历。
Python中内置了很多迭代器,例如
range()
函数返回的就是一个迭代器,可以使用
for
循环遍历它。另外,Python中的列表、元组、字典、集合等容器也都实现了迭代器协议,因此可以直接使用
for
循环遍历它们