python迭代器详解

迭代器是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循环遍历它们