列表和字符串的大小

2024-10-01 15:49:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试获取以字节为单位的列表大小,以及以字节为单位的字符串大小。在

如果我们看到下面代码的输出,list的大小显示为52 bytes,当我加入列表并检查大小时,输出是35 bytes。最后,我试图得到字符串"Iamtestingsize"的大小,结果又是35 bytes。所以,“join”之后的字符串大小和字符串“Iamtestingsize”的大小是相同的。在

我有两个问题:

1)为什么列表大小显示不同的输出?另外,请告诉我你是否知道如何获取列表内容的大小?在

2)我想,1字节==1个字符,我希望字符串的大小msgstr和字符串将显示为14字节而不是35字节。请告诉我这里有什么遗漏吗?在

3)当我对list和strings执行len()时,对于msgstr和string返回了-14,而list的length返回了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

注意:我使用的是python2.7


Tags: of字符串列表sizestringlen字节bytes
1条回答
网友
1楼 · 发布于 2024-10-01 15:49:15
  1. 列表(任何列表)数据结构需要额外的维护开销来保持元素在其中。此开销反映在getsizeof的结果差异中。

  2. Python字符串是一个text sequence type - str,而不是C字符串或类似的字符串。与Python列表一样,除了字符串的内容之外,还涉及相关的元数据:


Python 2.7.10 (default, Jul 30 2016, 18:31:42)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.getsizeof(b'asd')
40
>>> sys.getsizeof('asd')
40
>>> sys.getsizeof(u'asd')
56

  1. 直观地说,字符串的长度定义为字符串中的字符数。在

相关问题 更多 >

    热门问题