Integer.MIN_VALUE
和Integer.MAX_VALUE
。 python中有类似的东西吗?#1 楼
Python 3在Python 3中,此问题不适用。普通的
int
类型是不受限制的。但是,实际上,您可能正在寻找有关当前解释器字长的信息,该信息在大多数情况下与机器的字长相同。该信息仍在Python 3中以
sys.maxsize
的形式提供,它是带符号的单词可以表示的最大值。等效地,它是最大可能列表或内存序列的大小。通常,无符号字可表示的最大值为
sys.maxsize * 2 + 1
,字中的位数为math.log2(sys.maxsize * 2 + 2)
。请参阅此答案以获取更多信息。Python 2
在Python 2中,纯
int
值的最大值可作为sys.maxint
:>>> sys.maxint
9223372036854775807
可以使用
-sys.maxint - 1
计算最小值,如下所示。 一旦超过此值,Python就会从纯整数无缝转换为长整数。所以大多数时候,您不需要了解它。
评论
这个数字可能看起来是任意的,但不是。 9223372036854775807恰好是2 ^ 63-1,因此您有一个64位int。通常,n位整数的值范围是-2 ^(n-1)到2 ^(n-1)-1。
– NullUserException
2011年9月30日,下午1:18
请注意,如果您使用的是32位Python运行时,则sys.maxint将返回2 ^ 31-1,即使Python将使用长数据类型无缝跳转到64位。
–斯科特·斯塔福德
2014-2-26在16:19
按照@Akash Rana的建议,改用sys.maxsize。正如sys docs所说,它也存在于Python 2中。这将使代码与两个Python版本更加兼容。
–Ioannis Filippidis
15-10-27在20:54
您和我对文档中的这一行有不同的解释。 2to3中的替换是一种很好的快捷方法,在大多数情况下不会破坏任何东西,但是这两个值之间的差异很重要。最佳做法是使用您实际上打算使用的值。如果您在Python 2中确实需要sys.maxint,则在Python 3中将不再需要它,并且应该真正将其完全删除,而不是更改为sys.maxsize。
–senderle
2015年11月1日,12:51
minsize-与按位min运算符相乘得出minsize〜sys.maxsize
–om471987
16-10-14在15:33
#2 楼
如果只需要一个大于所有其他数字的数字,则可以类似的方式使用float('inf')
,该数字小于所有其他数字:
float('-inf')
这在python 2和3中都有效。
评论
只是一个注释(尽管无关紧要,但仍然如此):float('inf')> float('inf')得出'false'。无限数应大于另一个无限数:-D ...注意
–螺丝
17年6月28日在14:49
@Scre您还期望什么? x> x通常为False,并且无穷大也不例外。 (另一方面,float('NaN)...)
–詹姆士林
17年9月6日在2:03
这实际上不适用于int cauze不能将无限浮点数转换为int ...但是在大多数情况下都适用
–礼顿
17年9月23日在23:16
@Scre“在比较操作中,正无穷大大于除其自身和NaN的所有值,负无穷小于所有值除其自身和NaN之外的所有值。” gnu.org/software/libc/manual/html_node/Infinity-and-NaN.html
–内森(Nathan)
17年7月7日在5:38
这不是OP问题的答案
–嘘
19年11月28日在12:28
#3 楼
sys.maxint
常量已从Python 3.0及更高版本中删除,请改用sys.maxsize
。整数
PEP 237:本质上,长整型重命名为int。也就是说,只有一个内置的整数类型,称为int;但它的行为基本上类似于
旧的long类型。
PEP 238:类似1/2的表达式返回浮点数。使用1 // 2获得截断行为。 (后一种语法已经存在多年了,至少自Python 2.2起。)
删除了sys.maxint常量,因为整数值不再受限制。但是,sys.maxsize可以用作大于任何实际列表或字符串索引的整数。它符合实现的“自然”整数大小,并且通常与同一平台上以前发行版中的sys.maxint相同(
)(假定
具有相同的生成选项)。
长整数的repr()不再包含尾随的L,因此无条件剥离该字符的代码将代替
最后一位数字。 (改为使用str()。)
八进制文字不再具有0720的形式;请改用0o720。
参考:https://docs.python.org/3/whatsnew/3.0.html#integers
评论
正确。实际上,来自help(sys):maxsize-支持的最大容器长度。这应该是公认的答案。
–马可·苏拉(Marco Sulla)
19/12/29在21:53
#4 楼
在Python中,一旦您传递值int
,整数将自动从固定大小的long
表示形式转换为宽度可变的sys.maxint
表示形式,该值取决于平台是231-1还是263-1。请注意在此处附加的L
:>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L
从Python手册:
数字是由数字文字或以内置函数和运算符的结果。未经修饰的整数文字(包括二进制,十六进制和八进制数字)将生成纯整数,除非它们所表示的值太大而无法表示为纯整数,在这种情况下,它们将生成一个长整数。后缀为
'L'
或'l'
的整数文字会产生长整数(首选'L'
是因为1l
看起来太像11个了!)。Python非常努力地假装其整数是数学整数,并且无界的。例如,它可以轻松计算googol:>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
评论
更令人困惑的是,Python的长处不像Java的长处-它更接近BigInteger。
– NullUserException
2011-09-30 1:20
在python3中,似乎没有L后缀,无论数字多大,它都只是int,不会长。
–王E
2月19日下午13:18
#5 楼
对于Python 3,它是import sys
max = sys.maxsize
min = -sys.maxsize - 1
评论
python 3不存在。参见stackoverflow.com/questions/13795758/…
– netskink
17 Mar 28 '17 at 12:14
好吧,python 3确实存在,谢天谢地(!);但是sys.maxint在python 3中不存在(tl; dr:“ sys.maxint常量已删除(在python3中),因为不再有整数值的限制。但是,sys.maxsize可以用作一个大于任何实际列表或字符串索引的整数。”)
–迈克尔
17年7月16日在0:33
为什么要创建阴影来隐藏诸如min()和max()之类的变量?
–RoadRunner
18年7月12日在0:38
查找2的补码二进制文件
– netskink
19年6月6日在14:11
最小=〜sys.maxsize
–安德鲁(Andrew)
19年11月8日在4:03
#6 楼
您可以这样使用'inf':import math
bool_true = 0 < math.inf
bool_false = 0 < -math.inf
参考:math —数学函数
评论
注意math.inf等同于float('inf')
–乔治
19-09-27在9:10
#7 楼
如果需要数组或列表索引的最大值(相当于C / C ++中的size_t
),则可以使用numpy:np.iinfo(np.intp).max
与
sys.maxsize
相同,但是优点是如果您希望在计算机上使用本机int的最大值:
np.iinfo(np.intc).max
您可以查看文档中其他可用的类型。
对于浮点数,您还可以使用
sys.float_info.max
。#8 楼
我严重依赖这样的命令。python -c 'import sys; print(sys.maxsize)'
返回的最大整数:9223372036854775807
有关“ sys”的更多参考,您应该访问
https://docs.python.org/3/library/sys.html
https://docs.python.org/3/library/sys.html#sys .maxsize
评论
否-maxsize只是可能的最大容器索引。 Python将愉快地使用100位整数及更多
–托尼·萨福克66
19年4月28日在16:55
#9 楼
sys.maxsize
实际上不是受支持的最大整数值。您可以将maxsize加倍并乘以它本身,它保持有效和正确的值。但是,如果尝试
sys.maxsize ** sys.maxsize
,它将使您的计算机挂起相当长的时间。正如许多人指出的那样,字节和位的大小似乎无关紧要,因为它实际上不存在。我猜想python在需要更多内存空间时会愉快地扩展它的整数。因此,通常没有限制。现在,如果您正在谈论以安全的方式打包或存储整数,以便以后可以完整地检索它们,那当然是相关的。我真的不确定打包,但我知道python的
pickle
模块可以很好地处理这些问题。字符串表示形式显然没有实际的限制。实际上,最重要的是:您的应用程序限制是多少?对数字数据有什么要求?使用该限制代替python相当不存在的整数限制。
评论
请注意,在Python 3中,int类型与Python 2中的long类型基本相同,因此,最大或最小int的概念完全消失了。即使在Python 2上,它也基本上无关紧要。@agf:它可能以各种方式相关。例如,在任何需要保存找到的最小值的算法中(例如排序算法)。最小值可以在sys.maxint处初始化,因此可以确保找到的任何第一个值都用作min
@Toaster,除了可以列出所有值都大于sys.maxint的列表外,因为它只是Python 2上int类型的最大值,Python会默默地将其提升为long类型。
如果您需要在算法中使用“很大的值”,例如查找泛型集合的最小值或最大值,float('inf')或float('-inf')可能会很有帮助。
Python整数范围的可能重复项