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値を使用できますfloat("inf")

注:elyのコメントによると、これはコードの効率に影響を与える可能性があるため、最善の解決策ではない可能性があります。

于 2014-04-08T21:09:28.507 に答える
34

他のすべてよりも大きい数を探している場合:

方法1:

float('inf')

方法2:

import sys
max = sys.maxsize

他のすべてよりも小さい数を探している場合:

方法1:

float('-inf')

方法2:

import sys
min = -sys.maxsize - 1

方法1は、Python2とPython3の両方で機能します。方法2はPython3で機能します。Python2でメソッド2を試したことはありません。

于 2019-01-14T00:28:39.807 に答える
28

Python3intには最大値がありません。

Pythonと同じ方法でコンパイルしたときにCでintの最大サイズを決定することが目的の場合は、structモジュールを使用して次のことを確認できます。

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

Python 3 intオブジェクトの内部実装の詳細に興味がある場合は、sys.int_info1桁あたりのビット数と桁サイズの詳細を確認してください。通常のプログラムはこれらを気にする必要はありません。

于 2012-12-10T06:58:00.753 に答える
4

Python 3のintは任意の長さであるため、Python3.0にはsys.maxintがありません。sys.maxintの代わりにsys.maxsizeがあります。正のサイズのsize_t、別名Py_ssize_tの最大サイズ。

于 2017-12-28T14:42:22.760 に答える
0

代替案は

import math

... math.inf ...
于 2020-05-14T20:54:55.983 に答える