208

我一直在尝试找出如何表示最大整数,并且我已经阅读过使用"sys.maxint". 但是,在 Python 3 中,当我调用它时,我得到:

AttributeError: module 'object' has no attribute 'maxint'
4

6 回答 6

217

sys.maxint 常量已被删除,因为整数值不再有限制。但是,sys.maxsize 可以用作大于任何实际列表或字符串索引的整数。它符合实现的“自然”整数大小,并且通常与同一平台上先前版本中的 sys.maxint 相同(假设相同的构建选项)。

http://docs.python.org/3.1/whatsnew/3.0.html#integers

于 2012-12-10T05:58:00.050 回答
96

正如其他人指出的那样,Python 3int没有最大大小,但如果您只需要保证高于任何其他int值的东西,那么您可以使用 Infinity 的浮点值,您可以使用float("inf").

注意:根据 ely 的评论,这可能会影响代码的效率,因此它可能不是最佳解决方案。

于 2014-04-08T21:09:28.507 回答
34

如果您正在寻找一个比其他所有数字都大的数字:

方法一:

float('inf')

方法二:

import sys
max = sys.maxsize

如果您正在寻找一个小于所有其他数字的数字:

方法一:

float('-inf')

方法二:

import sys
min = -sys.maxsize - 1

方法 1 适用于 Python2 和 Python3。方法 2 适用于 Python3。我没有在 Python2 中尝试过方法 2。

于 2019-01-14T00:28:39.807 回答
28

Python 3 整数没有最大值。

如果您的目的是确定在 C 中以与 Python 相同的方式编译时 int 的最大大小,您可以使用 struct 模块来找出:

>>> import struct
>>> platform_c_maxint = 2 ** (struct.Struct('i').size * 8 - 1) - 1

如果您对 Python 3 int 对象的内部实现细节感到好奇,请查看sys.int_info每位数的位数和位数大小的详细信息。没有正常的程序应该关心这些。

于 2012-12-10T06:58:00.753 回答
4

Python 3.0 不再具有 sys.maxint ,因为 Python 3 的整数是任意长度的。而不是 sys.maxint 它有 sys.maxsize; 正尺寸 size_t aka Py_ssize_t 的最大尺寸。

于 2017-12-28T14:42:22.760 回答
0

另一种选择是

import math

... math.inf ...
于 2020-05-14T20:54:55.983 回答