Python 2.x では、異種の型を比較できます。
便利なショートカット (ここでは Python 2.7 で) は、None
整数または浮動小数点値よりも小さい値を比較することです。
>>> None < float('-inf') < -sys.maxint * 2l < -sys.maxint
True
Python 2.7 では、空のタプル()
は無限値です。
>>> () > float('inf') > sys.maxint
True
このショートカットは、int と float の混合リストをソートし、絶対最小値と最大値を参照したい場合に便利です。
ただし、このショートカットは Python 3000 で削除されました (これは Python 3.2 です)。
>>> None < 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: NoneType() < int()
さらに、Python3000は、すべての int が long に昇格し、制限が適用されなくなるという理論を削除しました。 sys.maxint
PEP 326、A Case for Top and Bottom Values は、Python で参照の最小値と最大値を進めました。文書化された新しい順序付け動作。
PEP 326 が拒否されたので、Python 2X と Python 3000 で整数と浮動小数点数と長整数を扱う最小値と最大値の有用で使用可能な定義は何ですか?
編集
いくつかの答えは、「maxv=float('inf') を使用するだけ」という行に沿っています。
>>> float(2**5000)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: long int too large to convert to float
と:
>>> cmp(1.0**4999,10.0**5000)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: (34, 'Result too large')
まだ:
>>> () > 2**5000
True
float 値に cmp するにfloat('inf')
は、long 値を float に変換する必要があり、変換によりOverflowError
...
結論
皆さん、回答とコメントをありがとうございます。私がTryPyPyの答えを選んだのは、それが私が求めていたものと最も一致しているように見えたからです:無限に関するウィキペディアのエントリで説明されている絶対最大値と絶対最小値です。
この質問で、 の比較を完了するために long または int 値が float に変換されないことを知りましたfloat('inf') > 2**5000
。私は知りませんでした。