在Python中,为什么整数元组比不同的整数占用更少的空间?

时间:2011-05-23 01:28:33

标签: python sizeof tuples

以下是随机整数的示例:

a, b, c, d = 79412623, 56529819571, 10431, 30461
t = (79412623, 56529819571, 10431, 30461)

他们的尺寸:

import sys
sys.getsizeof(t) # 88
aa, bb, cc, dd = sys.getsizeof(a), sys.getsizeof(b), sys.getsizeof(c), sys.getsizeof(d)
sum([aa,bb,cc,dd]) # 96

为什么元组占用的空间更少?

2 个答案:

答案 0 :(得分:13)

sys.getsizeof返回的数字不包括容器包含的对象的大小。

>>> sys.getsizeof({1:2})
280
>>> sys.getsizeof({'a_really_long_string_that_takes_up_lots_of_space':'foo'})
280

答案 1 :(得分:3)

我正在使用Python 2.6.2在32位Windows XP上工作,我尝试了你的代码,如下所示:

在[15]中:a,b,c,d = 79412623,56529819571,10431,30461

在[16]中:t =(79412623,56529819571,10431,30461)

在[17]中:sys.getsizeof(t) 出[17]:44

在[18]中:aa,bb,cc,dd = sys.getsizeof(a),sys.getsizeof(b),sys.getsizeof(c),sys.getsizeof(d)

在[19]中:总和([aa,bb,cc,dd]) 出[19]:56