1. 生成式
f = [x ** 2 for x in range(1, 20)]
print(sys.getsizeof(f)) # 查看对象占用内存的字节数
print(f)
结果

2. 生成器
f = (x ** 2 for x in range(1, 1000))
print(sys.getsizeof(f)) # 查看对象占用内存的字节数
print(f)
结果

可以总结出二者的区别
- 生成式用中括号,生成器用小括号()
- 生成式创建列表之后已经准备好元素,因此需要较多内存空间,而生成器每次需要数据的时候通过内部运算得到数据,因此内存空间占用较小(需花费额外时间)
- 生成式创建的是一个列表,而生成器创建的是一个对象
本文比较了生成式和生成器在Python中的表现,解释了中括号列表生成式创建完整数据结构占用更多内存,而小括号生成器按需计算节省空间。理解两者差异有助于优化内存使用和性能。

584

被折叠的 条评论
为什么被折叠?



