Skip to content

Python 生成器与迭代器

TIP

生成器使用惰性求值,可以显著降低内存占用,适合处理大数据流。

生成器函数

python
def fibonacci(n):
    a, b = 0, 1
    count = 0
    while count < n:
        yield a
        a, b = b, a + b
        count += 1

for num in fibonacci(10):
    print(num)

生成器表达式

python
# 列表推导式(立即计算,占内存)
squares_list = [x**2 for x in range(10)]

# 生成器表达式(惰性计算,省内存)
squares_gen = (x**2 for x in range(10))

for square in squares_gen:
    print(square)

大文件处理

python
def read_large_file(file_path):
    with open(file_path, "r", encoding="utf-8") as f:
        for line in f:
            yield line.strip()

for line in read_large_file("huge_log.txt"):
    process_line(line)