gpt4 book ai didi

python - python中整数变量大小的下限是多少?

转载 作者:太空宇宙 更新时间:2023-11-04 04:47:36 26 4
gpt4 key购买 nike

我从不同的来源了解到,整数变量的大小在 python 中是无限的,它随着整数本身的大小而增长。我对在这种情况下正在处理的代码几乎没有疑问。

  1. Is there a lower bound? Or does it literally starts from 1 byte and grows according to integer size?
  2. Can a lower bound or any bound for that matter of fact be applied to integer variables in python?
  3. If I have an array of integers is it likely that each index has different number of bytes depending on the integer it is holding? or Does python guarantee uniform size in arrays?

我想做的是通过记下对一个非常大的数组求和所花费的时间来计算内存带宽,然后使用这个时间和数组的大小来粗略估计带宽。但是为了这样做,我需要知道从内存中读取的字节数,如果它们不统一,那么检查数组的每个单独索引确实是不可行的,因为数组有大约 10M 的索引。还有其他建议吗?

最佳答案

Is there a lower bound? Or does it literally starts from 1 byte and grows according to integer size?

int 是一个对象。它当然不能只有 1 个字节长。

可以使用sys.getsizeof(0)获取下界

在我的机器上:

>>> sys.getsizeof(0)
24
>>> sys.getsizeof(10000000000000000000000)
36
>>> sys.getsizeof(1<<31)
32
>>> sys.getsizeof(10000000000000000000000000000000000000000000)
44

在 Python 2 中,int 使用 native 整数直到不可能,之后它使用 long。在 Python 3 中,所有内容都是 long,因此值 24 是版本和机器相关的(32/64 位),但是绑定(bind)。

Can a lower bound or any bound for that matter of fact be applied to integer variables in python?

如上所述,下限是,上限:否。只要你有足够的内存,任何整数都可以存储在内存中。如上所示,整数越大,整数对象越大。

如果您知道整数可以具有的最大值,那么是的,上限。

If I have an array of integers is it likely that each index has different number of bytes depending on the integer it is holding? or Does python guarantee uniform size in arrays?

与 C 数组不同,该数组包含整数的引用。因此数组大小本身很容易预测。

>>> sys.getsizeof([1000000000000000000000]*10)
144
>>> sys.getsizeof([1000000000000000000000]*20)
224
>>> sys.getsizeof([1]*20)
224
>>>

看看存储在里面的值如何不影响结果,而只影响数组大小?

那是因为您必须考虑每个 int 对象的大小,如上所示,它是可变的,这是预测问题的核心。

关于python - python中整数变量大小的下限是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49152708/

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