
迭代器是Python中一种非常强大的功能,它可以让我们以一种惰性的方式访问集合中的元素,而不需要一次性获取所有的数据。
迭代器有两个重要的方法:iter__和__next。__iter__方法返回迭代器本身,__next__方法返回集合中的下一个元素,如果没有更多元素了,就抛出StopIteration异常。
迭代器可以用for循环或者next函数来遍历,也可以用生成器来创建。生成器是一种特殊的迭代器,它使用yield语句来返回每次迭代的值,而不需要实现__iter__和__next__方法。生成器可以用生成器表达式或者函数来定义,它可以节省内存空间,提高效率。
下面是一个关于迭代器和生成器的简单示例:
定义一个列表my_list = [1, 2, 3, 4, 5]
用iter函数将列表转换为迭代器my_iter = iter(my_list)
用next函数获取迭代器中的元素print(next(my_iter)) # 输出 1 print(next(my_iter)) # 输出 2 print(next(my_iter)) # 输出 3
用for循环遍历迭代器中剩余的元素for x in my_iter: print(x) # 输出 4 和 5定义一个生成器函数,返回斐波那契数列def fib(n): a = 0 b = 1 while a < n: yield a # 使用yield语句返回每次迭代的值 a, b = b, a + b调用生成器函数,返回一个生成器对象my_gen = fib(10)
用for循环遍历生成器中的元素for x in my_gen: print(x) # 输出 0, 1, 1, 2, 3, 5, 8