我在python中寻找整数的最小值和最大值。例如,在Java中,我们有Integer.MIN_VALUE
和Integer.MAX_VALUE
。在python中有这样的东西吗?
答案 0 :(得分:657)
在Python 3中,这个问题不适用。普通的int
类型是无界的。
但是,您实际上可能正在寻找机器的 word size 。这仍然在Python 3中以sys.maxsize
的形式提供。
在Python 2中,普通int
值的最大值可用sys.maxint
:
>>> sys.maxint
9223372036854775807
您可以使用-sys.maxint - 1
计算最小值,如here所示。
一旦超过此值,Python就会从普通整数切换为长整数。所以大多数时候,你不需要知道它。
答案 1 :(得分:192)
sys.maxint 常量已从Python 3.0开始删除,而是使用 sys.maxsize
整数
- PEP 237:基本上,长期重命名为int。也就是说,只有一个内置的整数类型,名为int;但它的行为大多像是 老长型。
- PEP 238:像1/2这样的表达式返回一个浮点数。使用1 // 2来获取截断行为。 (后一种语法已存在多年,at 至少从Python 2.2开始。)
- 删除了sys.maxint常量,因为整数值不再受限制。但是,sys.maxsize可以用作 大于任何实际列表或字符串索引的整数。它符合 实现的“自然”整数大小通常是相同的 作为同一平台上以前版本中的sys.maxint(假设为 相同的构建选项)。
- 长整数的repr()不再包含尾随L,因此无条件地剥离该字符的代码将会切断 最后一位数字。 (改用str()。)
- 八进制文字不再是0720的形式;改用0o720。
答案 2 :(得分:161)
如果您只需要一个比其他数字更大的数字,您可以使用
float('inf')
以类似的方式,比其他所有人都小:
float('-inf')
这适用于python 2和3。
答案 3 :(得分:75)
在Python中,一旦传递值long
,整数将自动从固定大小的int
表示切换为可变宽度sys.maxint
表示,该值为2 31 < / sup> - 1或2 63 - 1取决于您的平台。请注意附加在此处的L
:
>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L
数字是由数字文字创建的,或者是内置函数和运算符的结果。纯文本整数文字(包括二进制,十六进制和八进制数)产生普通整数,除非它们表示的值太大而不能表示为普通整数,在这种情况下它们会产生一个长整数。带有
'L'
或'l'
后缀的整数文字会产生长整数('L'
是首选,因为1l
看起来太像十一!)。
Python非常努力地假装它的整数是数学整数并且是无界的。例如,它可以轻松地计算googol:
>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
答案 4 :(得分:25)
对于Python 3,它是
import sys
max = sys.maxsize
min = -sys.maxsize -1
答案 5 :(得分:3)
通过使用sys
模块(python 3)
import sys
INT_MAX = sys.maxsize
INT_MIN = -sys.maxsize-1
print(INT_MAX,INT_MIN)
答案 6 :(得分:2)
如果要使用数组或列表索引的最大值(相当于C / C ++中的size_t
),则可以使用numpy:
np.iinfo(np.intp).max
这与sys.maxsize
相同,但是优点是您不需要为此仅导入sys。
如果要在计算机上将本机int设置为最大值:
np.iinfo(np.intc).max
您可以在doc中查看其他可用类型。
对于浮点数,您还可以使用sys.float_info.max
。
答案 7 :(得分:1)
我非常依赖这样的命令。
python -c 'import sys; print(sys.maxsize)'
返回Max int: 9223372036854775807
有关&#39; sys&#39;的更多参考资料你应该访问
答案 8 :(得分:1)
sys.maxsize
实际上不是所支持的最大整数值。您可以将maxsize加倍并单独乘以它,它保持有效和正确的值。
但是,如果尝试使用sys.maxsize ** sys.maxsize
,它将使您的计算机挂起大量时间。正如许多人指出的那样,字节和位的大小似乎无关紧要,因为它实际上不存在。我猜想python在需要更多内存空间时会愉快地扩展它的整数。因此,通常没有限制。
现在,如果您正在谈论以安全的方式打包或存储整数,以便以后可以完整地检索它们,那么这当然很重要。我真的不确定打包,但是我知道python的pickle
模块可以很好地处理这些问题。字符串表示形式显然没有实际的限制。
实际上,最重要的是:您的应用程序限制是多少?对数字数据有什么要求?使用该限制代替python相当不存在的整数限制。
答案 9 :(得分:0)
您可以这样使用'inf':
import math
bool_true = 0<math.inf
bool_false = 0<-math.inf