【发布时间】:2016-10-17 19:43:10
【问题描述】:
我正在尝试获取列表的大小(以字节为单位)以及字符串的大小(以字节为单位)。
如果我们看到下面的代码输出,列表的大小显示为52 bytes,而当我加入列表并检查大小时,输出为35 bytes。最后我尝试获取字符串"Iamtestingsize" 的大小,输出又是35 bytes。所以,“join”后的字符串大小和“Iamtestingsize”字符串的大小是一样的。
我有两个问题:
1) 为什么列表的大小显示不同的输出?另外,如果您对如何获取列表内容的大小有任何想法,请告诉我?
2) 我想,1 字节 == 1 个字符,我期望字符串 msgstr 和字符串的大小将显示为 14 个字节而不是 35 个。如果这里有任何遗漏,请告诉我?
3) 当我对列表和字符串执行 len() 时,对于 msgstr 和字符串 - 返回 14 而列表长度返回 4,这与我预期的一样。
import sys
list = ['I', 'am', 'testing', 'size']
print sys.getsizeof(list)
msgstr = "".join(list)
print "size of msgstr is " + str(sys.getsizeof(msgstr))
print msgstr
string = "Iamtestingsize"
print "size of str is " + str(sys.getsizeof(string))
print len(list)
print len(msgstr)
print len(string)
Output:
52
size of msgstr is 35
Iamtestingsize
size of str is 35
4
14
14
注意:我使用的是 python 2.7
【问题讨论】:
-
字符串对象占用的内存有一些固定的开销。当我尝试它时,我一直得到
size-len==37。列表和字符串需要不同的内存量,因为它们是完全不同类型的对象。没有理由它们应该是一样的。
标签: python python-2.7