我正在尝试使用列表进行一些实验,并遇到了自引用列表。我在 SO 上搜索并得到了一些关于它的基本问题的答案。但是当我尝试获取不同长度的自引用列表的内存大小时,我发现了一个有趣的模式。
重现代码:
在绘制上述数据点时
为什么自引用列表的内存大小在一定长度范围内保持不变,而在某个长度后增加?此外,内存大小的增加也是不同的。
重现代码:
import sys
memory_size = {}
for length in range(50):
lst = []
for length_loop in range(length):
lst.append(lst)
memory_size[length] = sys.getsizeof(lst)
memory_size的值:
{0: 64, 1: 96, 2: 96, 3: 96, 4: 96, 5: 128, 6: 128, 7: 128, 8: 128, 9: 192, 10: 192, 11: 192, 12: 192, 13: 192, 14: 192, 15: 192, 16: 192, 17: 264, 18: 264, 19: 264, 20: 264, 21: 264, 22: 264, 23: 264, 24: 264, 25: 264, 26: 344, 27: 344, 28: 344, 29: 344, 30: 344, 31: 344, 32: 344, 33: 344, 34: 344, 35: 344, 36: 432, 37: 432, 38: 432, 39: 432, 40: 432, 41: 432, 42: 432, 43: 432, 44: 432, 45: 432, 46: 432, 47: 528, 48: 528, 49: 528}
在绘制上述数据点时
Python 3.7.3 (default, Mar 27 2019, 16:54:48)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.5.0 -- An enhanced Interactive Python. Type '?' for help.
为什么自引用列表的内存大小在一定长度范围内保持不变,而在某个长度后增加?此外,内存大小的增加也是不同的。