CodeWalk

Python 中生成器实现无限序列

作者:Yahuda · 2026-05-30 12:55

如何使用生成器实现无限序列?请用代码实现一个无限自然数序列和无限斐波那契数列。

回答

Yahuda

生成器可以轻松表示无限序列,因为它是惰性求值的。

def naturals(start=0):
    while True:
        yield start
        start += 1

def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

# 使用
nats = naturals()
print(next(nats))  # 0
print(next(nats))  # 1

fib = fibonacci()
first_10 = [next(fib) for _ in range(10)]
print(first_10)  # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

注意事项

  1. 无限序列不能转换为 list(内存溢出)
  2. 使用 itertools.islice 截取前 N 个:list(islice(fibonacci(), 10))
  3. 适合流式处理、数据管道等场景