gpt4 book ai didi

Python:列表的每个元素占用多少空间?

转载 作者:IT王子 更新时间:2023-10-28 23:35:24 27 4
gpt4 key购买 nike

我需要一个非常大的列表,并试图弄清楚我能把它做成多大,以便它仍然适合 1-2GB 的 RAM。我正在使用 64 位 (x86_64) 上的 CPython 实现。

编辑:感谢bua的回答,我已经填写了一些更具体的答案。

空间(内存)使用量是多少(以字节为单位):

  • 列表本身
    • sys.getsizeof([]) == 72
  • 每个列表条目(不包括数据)
    • sys.getsizeof([0, 1, 2, 3]) == 104,因此每个条目的开销为 8 字节。
  • 如果是整数则数据
    • sys.getsizeof(2**62) == 24(但因整数大小而异)
    • sys.getsizeof(2**63) == 40
    • sys.getsizeof(2**128) == 48
    • sys.getsizeof(2**256) == 66
  • 如果它是一个对象的数据(sizeof(Pyobject) 我猜))
    • sys.getsizeof(C()) == 72(C 是一个空的用户空间对象)

如果您可以分享更多关于观察到的尺寸的一般数据,那就太好了。例如:

  • 是否有特殊情况(我认为不可变值可能是共享的,所以 bool 列表可能不会为数据占用任何额外空间)?
  • 也许小列表需要 X 字节开销,而大列表需要 Y 字节开销?

最佳答案

起点:

>>> import sys
>>> a=list()
>>> type(a)
<type 'list'>
>>> sys.getsizeof(a)
36
>>> b=1
>>> type(b)
<type 'int'>
>>> sys.getsizeof(b)
12

并来自 python 帮助:

>>> help(sys.getsizeof)
Help on built-in function getsizeof in module sys:

getsizeof(...)
getsizeof(object, default) -> int

Return the size of object in bytes.

关于Python:列表的每个元素占用多少空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1680436/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com