Python の sys.maxint
プログラミングでは、 maxint/INT_MAX は整数で表現できる最大値を示します。場合によっては、プログラミング中に、他の整数値よりも大きな値を割り当てる必要がある場合があります。通常、そのような値は手動で割り当てられます。たとえば、次の式を使用して最小値を見つける必要がある整数のリストを考えてみましょう。 for ループ 。
パイソン
# initializing the list> li> => [> 1> ,> -> 22> ,> 43> ,> 89> ,> 2> ,> 6> ,> 3> ,> 16> ]> > # assigning a larger value manually> curr_min> => 999999> > # loop to find minimum value> for> i> in> range> (> 0> ,> len> (li)):> > > # update curr_min if a value lesser than it is found> > if> li[i] curr_min = li[i] print('The minimum value is ' + str(curr_min))> |
出力
The minimum value is -22
上記のアプローチでは、次のように仮定します。 999999 はリスト内の最大値であり、他の要素と比較して、それより小さい値が見つかった場合に更新します。
Pythonのsysモジュール
このモジュールは、インタープリターと対話し、インタープリターによって維持される変数にアクセスするために使用されます。ランタイム環境で操作を実行するために使用できます。その機能を利用するには、他のパッケージと同様にこれをインポートする必要があります。パイソンの システムモジュール さまざまな関数と定数を提供します。 マックスント 、他の整数よりも大きいことが保証される正の整数値を設定するために使用できます。以下の例を見てください。
パイソン
# import the module> import> sys> > # initializing the list> li> => [> 1> ,> -> 22> ,> 43> ,> 89> ,> 2> ,> 6> ,> 3> ,> 16> ]> > # assigning a larger value with> # maxint constant> curr_min> => sys.maxint> > # loop to find minimum value> for> i> in> range> (> 0> ,> len> (li)):> > > # update curr_min if a value lesser> > # than it is found> > if> li[i] curr_min = li[i] print('The minimum value is ' + str(curr_min))> |
出力
The minimum value is -22
上記のプログラムでは、より大きな値を手動で割り当てる代わりに、 sys.maxint 使用されている。この定数は、Python バージョン 2.x でサポートされています。定数で示される値は次のように計算できます。
maxint = 2 31 – 1 (32ビット環境の場合)
maxint = 2 63 – 1 (64ビット環境の場合)
で パイソン2 、maxint に 1 を追加すると、可能な限り最高の値が得られます。 長い整数 そしてで Python 2.7 、maxint から 1 を引くと、 整数の可能な最小値 。
パイソン
# import the module> import> sys> > max_int> => sys.maxint> min_int> => sys.maxint> -> 1> long_int> => sys.maxint> +> 1> > print> (> 'maxint :'> +> str> (max_int)> +> ' - '> +> str> (> type> (max_int)))> print> (> 'maxint - 1 :'> +> str> (max_int)> +> ' - '> +> str> (> type> (min_int)))> print> (> 'maxint + 1 :'> +> str> (max_int)> +> ' - '> +> str> (> type> (long_int)))> |
出力
maxint :9223372036854775807 - maxint - 1 :9223372036854775807 - maxint + 1 :9223372036854775807 -
この定数はから削除されました パイソン3 、このバージョンの整数は任意の長さとみなされます。この定数を Python 3 で使用すると、次のエラーが発生します。最小値要素をリストから見つけ出す必要がある同じ例を考えてみましょう。
Python3
import> sys> > # initializing the list> li> => [> 1> ,> -> 22> ,> 43> ,> 89> ,> 2> ,> 6> ,> 3> ,> 16> ]> > # assigning a larger value with maxint constant> curr_min> => sys.maxint> > # loop to find minimum value> for> i> in> range> (> 0> ,> len> (li)):> > > # update curr_min if a value lesser than it is found> > if> li[i] curr_min = li[i] print('The minimum value is ' + str(curr_min))> |
出力:
AttributeError: module 'sys' has no attribute 'maxint'
整数値に制限がなくなったため、この定数は削除されました。で Python3、 これに似た定数が導入されました。 sys.maxsize 。これは、変数タイプの可能な最大の整数値を返します。 Py_ssize_t また、プラットフォームのポインター サイズも示します。この maxsize は、文字列やリストなどのさまざまなデータ構造のサイズを制限すると考えられます。もう 1 つ注意すべきことは、Python 3 では 整数 そして 長い整数 一つに統合されます。よりよく理解するために、以下の例を見てください。
Python3
# import the module> import> sys> > # using sys.maxsize> max_int> => sys.maxsize> min_int> => sys.maxsize> -> 1> long_int> => sys.maxsize> +> 1> > print> (> 'maxint :'> +> str> (max_int)> +> ' - '> +> str> (> type> (max_int)))> print> (> 'maxint - 1 :'> +> str> (max_int)> +> ' - '> +> str> (> type> (min_int)))> > # the data type is represented as int> print> (> 'maxint + 1 :'> +> str> (max_int)> +> ' - '> +> str> (> type> (long_int)))> |
出力
maxint :9223372036854775807 - maxint - 1 :9223372036854775807 - maxint + 1 :9223372036854775807 -