如何理解Python中列表结构的内存?



我想知道python的记忆。

这是代码:

import sys
list1 = [1]
list2 = [1,2]
list3 = [1,2,3]
list4 = [1,2,3,4]
list5 = [1,2,3,4,5]
list6 = ['1',2,3,4,5,6]
list7 = [1,2,'3','4',5,6,7]
list8 = [1,2,3,'sdsd',5,6,7,8]
list9 = [1,2,3,4,5,6,7,8,9]
print('list1 size is :', sys.getsizeof(list1))
print('list2 size is :', sys.getsizeof(list2))
print('list3 size is :', sys.getsizeof(list3))
print('list4 size is :', sys.getsizeof(list4))
print('list5 size is :', sys.getsizeof(list5))
print('list6 size is :', sys.getsizeof(list6))
print('list7 size is :', sys.getsizeof(list7))
print('list8 size is :', sys.getsizeof(list8))
print('list9 size is :', sys.getsizeof(list9))

结果如下:

list1 size is : 64
list2 size is : 72
list3 size is : 120
list4 size is : 120
list5 size is : 120
list6 size is : 152
list7 size is : 120
list8 size is : 120
list9 size is : 152

我困惑的问题是:

  • 为什么list6大于list7且等于list9?

  • 为什么list3-是list5equal to是list7-是list8 ' ?

谢谢大家。

首先,getsizeof以字节为单位返回大小。

让我们把它分成更小的步骤。

int, string +空列表的代码示例:

import sys
list1 = [1]
list2 = ['a']
list3 = []
print('list 1:', sys.getsizeof(list1))
print('list 2:', sys.getsizeof(list2))
print('list 3:', sys.getsizeof(list3))
<<p>反应/strong>
list 1: 64
list 2: 64
list 3: 56

如你所见,空列表使用56个字节,带有string或int类型的列表使用64个字节。

每个列表区域(步骤)将保留至少8字节的量,以包含如下示例中的数据。

import sys
list1 = [1]
list2 = [1,2]
list3 = [1,2,3]
list4 = [1134,2234,3334]
list5 = ['ab','t',3334]
print('list 1:', sys.getsizeof(list1))
print('list 2:', sys.getsizeof(list2))
print('list 3:', sys.getsizeof(list3))
print('list 4:', sys.getsizeof(list4))
print('list 5:', sys.getsizeof(list5))

List 3-5使用了相同的空间,这里唯一相等的是列表项的数量。

list 1: 64
list 2: 72
list 3: 80
list 4: 80
list 5: 80

那么为什么你看到字节是相等的,我认为你可以找到Python的工作方式,以及它的基本工作方式。

我不能解释更多,关于它的逻辑与否,它总是可以讨论的。

是一样的,如果你在电脑上保存一个文本文档,它会为文件保留一些空间,而文件的实际字节大小通常是不同的,我认为python也会做类似的事情。

最新更新