默认使用yield在函数内,即改函数就会成为一个特殊的迭代器,称为生成器
作用:实现高效的迭代和流式数据处理,惰性求值,省内存
pythondef fibonacci_generator(n):
"""生成斐波那契数列的生成器"""
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
print(list(fibonacci_generator(5))) # [0, 1, 1, 2, 3]
(x * x for x in range(1000000)) 使用元组方式去生成
python# 列表推导式
squares_list = [x * x for x in range(1000000)]
# 生成器表达式
squares_generator = (x * x for x in range(1000000))
# 计算内存使用
import sys
print(f"List size: {sys.getsizeof(squares_list)} bytes")
print(f"Generator size: {sys.getsizeof(squares_generator)} bytes")
# List size: 8448728 bytes
# Generator size: 208 bytes
优势对比:生成器在处理大数据集、流式数据和无限序列时,比列表推导式更节省内存。通过惰性求值,生成器可以有效地减少内存使用,提高程序的性能和可扩展性。
本文作者:lixf6
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!