我一直在尝试找出如何表示最大整数,我也读到过使用"sys.maxint",然而,在Python 3中,当我调用它时,我得到:
"sys.maxint"
AttributeError: module 'object' has no attribute 'maxint'
ftf50wuq1#
sys.maxint常量被删除,因为不再限制整数值。但是,sys.maxsize可以用作大于任何实际列表或字符串索引的整数。它符合实现的“自然”整数大小,通常与同一平台上以前版本中的sys.maxint相同(假设构建选项相同)。https://docs.python.org/3/whatsnew/3.0.html#integers
sys.maxint
sys.maxsize
1zmg4dgp2#
正如其他人所指出的,Python 3的int没有最大大小,但是如果你只是需要一个保证比任何其他int值都大的值,那么你可以使用浮点值作为Infinity,你可以用float("inf")得到它。在Python 3.5以后的版本中,可以使用math.inf。注意:根据伊利的评论,这可能会影响代码的效率,所以这可能不是最好的解决方案。
int
float("inf")
math.inf
a5g8bdjr3#
如果您要查找一个比所有其他数字都大的数字:方法一:
float('inf')
方法二:
import sys max = sys.maxsize
如果您要查找一个比所有其他数字都小的数字:方法一:
float('-inf')
import sys min = -sys.maxsize - 1
方法1在Python2和Python3中都有效。方法2在Python3中有效。我没有在Python2中尝试过方法2。
ep6jt1vc4#
Python 3 int没有最大值。如果你的目的是确定C语言中一个int的最大长度,你可以使用struct模块来找出:
>>> import struct >>> platform_c_maxint = 2 ** (struct.Struct('i').size * 8 - 1) - 1
如果你对Python 3 int对象的内部实现细节感兴趣,请查看sys.int_info中的位/位数和位数大小细节,普通程序不应该关心这些。
sys.int_info
blmhpbnm5#
Python 3.0不再有sys.maxint,因为Python 3的int是任意长度的,它用sys. maxsize代替了sys. maxint;一个正大小的size_t的最大值,即Py_ssize_t。
afdcj2ne6#
另一种选择是
import math ... math.inf ...
6条答案
按热度按时间ftf50wuq1#
sys.maxint
常量被删除,因为不再限制整数值。但是,sys.maxsize
可以用作大于任何实际列表或字符串索引的整数。它符合实现的“自然”整数大小,通常与同一平台上以前版本中的sys.maxint
相同(假设构建选项相同)。https://docs.python.org/3/whatsnew/3.0.html#integers
1zmg4dgp2#
正如其他人所指出的,Python 3的
int
没有最大大小,但是如果你只是需要一个保证比任何其他int
值都大的值,那么你可以使用浮点值作为Infinity,你可以用float("inf")
得到它。在Python 3.5以后的版本中,可以使用
math.inf
。注意:根据伊利的评论,这可能会影响代码的效率,所以这可能不是最好的解决方案。
a5g8bdjr3#
如果您要查找一个比所有其他数字都大的数字:
方法一:
方法二:
如果您要查找一个比所有其他数字都小的数字:
方法一:
方法二:
方法1在Python2和Python3中都有效。方法2在Python3中有效。我没有在Python2中尝试过方法2。
ep6jt1vc4#
Python 3 int没有最大值。
如果你的目的是确定C语言中一个int的最大长度,你可以使用struct模块来找出:
如果你对Python 3 int对象的内部实现细节感兴趣,请查看
sys.int_info
中的位/位数和位数大小细节,普通程序不应该关心这些。blmhpbnm5#
Python 3.0不再有sys.maxint,因为Python 3的int是任意长度的,它用sys. maxsize代替了sys. maxint;一个正大小的size_t的最大值,即Py_ssize_t。
afdcj2ne6#
另一种选择是