Python 生成器
时间: 2025-01-06 15:36:12 浏览: 12
### Python生成器概念
Python生成器是一种特殊的迭代器,可以由函数创建。这种函数会在每次调用`next()`方法时返回一个值并暂停执行状态,在下一次被调用时从中断处继续运行直到再次遇到`yield`语句[^1]。
```python
def simple_generator():
yield 1
yield 2
yield 3
gen = simple_generator()
print(next(gen)) # 输出: 1
print(next(gen)) # 输出: 2
print(next(gen)) # 输出: 3
```
### 创建与使用生成器表达式
除了通过定义带有 `yield` 的函数来构建生成器外,还可以利用更简洁的方式——生成器表达式。其语法类似于列表推导式的写法,但是采用圆括号而非方括号包裹起来[^2]。
```python
# 列表推导式 vs 生成器表达式对比
list_comprehension = [i * i for i in range(5)]
generator_expression = (i * i for i in range(5))
for item in generator_expression:
print(item, end=' ') # 输出: 0 1 4 9 16
```
### 实现无限序列的生成器
由于生成器不会一次性计算整个数据集而是按需产出下一个元素,因此非常适合用来表示理论上无穷尽的数据流。下面是一个简单的例子展示如何实现斐波那契数列作为无限序列:
```python
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
fib_gen = fibonacci()
for _ in range(7):
print(f'Fibonacci number {_}: {next(fib_gen)}')
```
阅读全文