私は最大の整数を表す方法を見つけようとしていて、を使用するために読んだことがあります"sys.maxint"
。ただし、Python 3で呼び出すと、次のようになります。
AttributeError: module 'object' has no attribute 'maxint'
私は最大の整数を表す方法を見つけようとしていて、を使用するために読んだことがあります"sys.maxint"
。ただし、Python 3で呼び出すと、次のようになります。
AttributeError: module 'object' has no attribute 'maxint'
整数の値に制限がなくなったため、sys.maxint定数が削除されました。ただし、sys.maxsizeは、実際のリストまたは文字列インデックスよりも大きい整数として使用できます。これは、実装の「自然な」整数サイズに準拠しており、通常、同じプラットフォーム上の以前のリリースのsys.maxintと同じです(同じビルドオプションを想定)。
他の人が指摘しているように、Python 3int
には最大サイズがありませんが、他のint
値よりも高いことが保証されているものが必要な場合は、で取得できるInfinityのfloat値を使用できますfloat("inf")
。
注:elyのコメントによると、これはコードの効率に影響を与える可能性があるため、最善の解決策ではない可能性があります。
他のすべてよりも大きい数を探している場合:
方法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を試したことはありません。
Python3intには最大値がありません。
Pythonと同じ方法でコンパイルしたときにCでintの最大サイズを決定することが目的の場合は、structモジュールを使用して次のことを確認できます。
>>> import struct
>>> platform_c_maxint = 2 ** (struct.Struct('i').size * 8 - 1) - 1
Python 3 intオブジェクトの内部実装の詳細に興味がある場合は、sys.int_info
1桁あたりのビット数と桁サイズの詳細を確認してください。通常のプログラムはこれらを気にする必要はありません。
Python 3のintは任意の長さであるため、Python3.0にはsys.maxintがありません。sys.maxintの代わりにsys.maxsizeがあります。正のサイズのsize_t、別名Py_ssize_tの最大サイズ。
代替案は
import math
... math.inf ...