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

发布于 2024-11-08 20:57:24 字数 343 浏览 4 评论 0原文

这是一个随机整数的示例:

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

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

Here's an example with random integers:

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

And their sizes:

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

Why does the tuple take up less space?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

去了角落 2024-11-15 20:57:25

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

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

The number returned by sys.getsizeof doesn't include the size of the objects contained by a container.

>>> sys.getsizeof({1:2})
280
>>> sys.getsizeof({'a_really_long_string_that_takes_up_lots_of_space':'foo'})
280
↘紸啶 2024-11-15 20:57:25

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

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

In [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

I'm working on a 32-bit Windows XP, with Python 2.6.2, and I tried your code, which looks like this:

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

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

In [17]: sys.getsizeof(t)
Out[17]: 44

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

In [19]: sum([aa,bb,cc,dd])
Out[19]: 56

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文