迭代器和生成器的区别,并举例
时间: 2024-09-26 13:06:44 浏览: 27
深入讲解Python中的迭代器和生成器
迭代器和生成器都是Python中用于处理序列数据的重要工具,但它们的工作方式有所不同:
1. **迭代器**:它是一个实现了`iter()`和`next()`方法的对象,每次调用`next()`都会返回序列中的下一个元素,直到遇到`StopIteration`异常表示序列结束。例子如下:
```python
def simple_iterator():
yield 1
yield 2
yield 3
it = simple_iterator()
print(next(it)) # 输出 1
print(next(it)) # 输出 2
print(next(it)) # 输出 3
next(it) # 抛出 StopIteration 异常
```
2. **生成器**:生成器是一种特殊的迭代器,它是使用`yield`关键字定义的函数,每次执行到`yield`语句时会暂停并保存当前的状态,下次调用时从上次暂停的地方继续执行。这使得生成器可以逐个产生值,而不需要一次性计算整个序列。例如:
```python
def generator_function():
yield 1
yield 2
yield 3
gen = generator_function()
print(gen.__next__()) # 输出 1
print(gen.__next__()) # 输出 2
print(gen.__next__()) # 输出 3
```
总之,迭代器主要用于控制数据流,而生成器则更侧重于提供一种简便的方式来逐步生成数据,节省内存空间。生成器实际上是懒惰求值的,只有需要的时候才会计算每个值。
阅读全文