我想知道返回哪个更好:元素列表或生成该列表中每个元素的生成器。检查了每个发电机的尺寸后,发现发电机要小得多。from sys import getsizeofmy_list = [i for i in range(100)]my_gen = (i for i in my_list)print(getsizeof(my_list)) # prints "452"print(getsizeof(my_gen)) # prints "56"生成器如何占用如此少的内存?
2 回答
慕勒3428872
TA贡献1848条经验 获得超6个赞
生成器的大小不受列表大小的影响。
from sys import getsizeof
short_list = [i for i in range(10)]
long_list = [i for i in range(100)]
print(getsizeof(short_list)) # prints '92'
print(getsizeof(long_list)) # prints '452'
gen_short_list = (i for i in short_list)
gen_long_list = (i for i in long_list)
print(getsizeof(gen_short_list)) # prints '56'
print(getsizeof(gen_long_list)) # prints '56'
除此之外,返回对象的大小并不重要。那么,我们开始吧。
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
检查生成器文档。这是一种动态生产物品的模式。在Python中使用关键字yield
andyield from
可以很好地处理无限数据结构,特别是因为生成器的构造。
添加回答
举报
0/150
提交
取消