Python 3にはfloat('inf')
とDecimal('Infinity')
がありますが、int('inf')
はありません。それでは、なぜ整数の無限セットを表す数字が言語に欠けているのでしょうか? int('inf')
は不合理ですか?
ここから: https://www.gnu.org/software/libc/manual/html_node/Infinity-and-NaN.html
IEEE 754浮動小数点数は、正または負の無限大、およびNaN(非数値)を表すことができます
つまり、float
およびDecimal
の表現はこれらの特別な値を格納できます。ただし、基本型int
内には同じものを保存できるものはありません。符号なし32ビット整数で2 ^ 32の制限を超えると、単純に再び0にロールオーバーします。
必要に応じて、無限値の可能性を特徴とする整数を含むクラスを作成できます。
整数の無限大が可能であり、Python標準に何も追加されていないことは正しいです。これはおそらく、math.inf
がほぼすべての場合に取って代わるためです(Martijnがコメントで述べたように)。
それまでの間、PyPIに 拡張整数 の実装を追加しました。
In [0]: from numbers import Integral, Real
In [0]: from extended_int import int_inf, ExtendedIntegral, Infinite
In [0]: i = int_inf
In [4]: float(i)
Out[4]: inf
In [5]: print(i)
inf
In [6]: i ** i
Out[6]: inf
In [7]: i
Out[7]: inf
In [9]: isinstance(i, Real)
Out[9]: True
In [10]: isinstance(i, Integral)
Out[10]: False
In [11]: isinstance(i, Infinite)
Out[11]: True
In [12]: isinstance(i, ExtendedIntegral)
Out[12]: True
In [13]: isinstance(2, ExtendedIntegral)
Out[13]: True
In [14]: isinstance(2, Infinite)
Out[14]: False
python 2.の場合、非常に大きな整数が必要になる場合があります。たとえば、x [:n]を使用してサブアレイを作成したい場合があります。また、アレイ全体が作成されるようにnを値に設定したい場合があります。 nにはfloatを使用できないため(Pythonは整数が必要です)、「大きな整数」が必要です。これを行う良い方法は、利用可能な最大の整数sys.maxintを使用することです。以下に例を示します。
# MAX_SOURCES = sys.maxint # normal setting
MAX_SOURCES = 5 # while testing
# code to use an array ...
... sources[:MAX_SOURCES]
そのため、テスト中は、より小さなソースアレイを使用できますが、実稼働ではフルアレイを使用できます。