a 列表的大小如何大于生成该列表元素的生成器?

我想知道返回哪个更好:元素列表或生成该列表中每个元素的生成器。检查了每个发电机的尺寸后,发现发电机要小得多。


from sys import getsizeof


my_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"

生成器如何占用如此少的内存?


猛跑小猪
浏览 1518回答 2
2回答

慕勒3428872

生成器的大小不受列表大小的影响。from sys import getsizeofshort_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'除此之外,返回对象的大小并不重要。那么,我们开始吧。

天涯尽头无女友

检查生成器文档。这是一种动态生产物品的模式。在Python中使用关键字yieldandyield from可以很好地处理无限数据结构,特别是因为生成器的构造。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python