Python 2.x ermöglicht den Vergleich heterogener Typen.Python: Max- und Min-Werte verwendbar
Eine nützliche Verknüpfung (in Python 2.7) Hier ist, dass None
vergleicht die kleiner als eine ganze Zahl oder Gleitkommawert:
>>> None < float('-inf') < -sys.maxint * 2l < -sys.maxint
True
Und in Python 2.7 ein leeres Tupel ()
einen unendlichen Wert ist:
>>>() > float('inf') > sys.maxint
True
Diese Verknüpfung ist nützlich, wenn Sie eine gemischte Liste von Ints und Floats sortieren und ein absolutes Minimum und Maximum zum Referenzieren haben möchten.
Diese Verknüpfung in Python 3000 wurde jedoch entfernt (dies ist Python 3.2):
>>> None < 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: NoneType() < int()
Außerdem Python3000 has removedsys.maxint
auf der Theorie, dass alle ints longs und die Grenze nicht mehr zu fördern gilt.
PEP 326, Ein Fall für obere und untere Werte, erweiterte eine Referenz Min und Max in Python. Das neue Bestellverhalten documented.
Seit PEP 326 abgelehnt wurde, was sind brauchbare, verwendbare Definitionen für einen Min- und Max-Wert, die mit Integers und Floats funktionieren und sich auf Python 2X und Python 3000 sehnen?
bearbeiten
Mehrere Antworten entlang der Linien sind „nur verwenden maxv = Schwimmer (‚inf‘)“ ... Der Grund, ich denke jedoch entfernte die Möglichkeit, ist dies:
>>> float(2**5000)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: long int too large to convert to float
Und:
>>> cmp(1.0**4999,10.0**5000)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: (34, 'Result too large')
Doch:
>>>() > 2**5000
True
Um einen Float-Wert cmp, float('inf')
würde der Long-Wert muss einen Schwimmer umgewandelt werden und die Umwandlung würde verursacht ein OverflowError
...
Fazit
Vielen Dank an all für deine Antworten und Kommentare. Ich TryPyPy den gepflückt answer weil es schien, die meisten Inline mit dem, was ich frage: ein absoluten größten und absoluten kleinsten Wert wie in der Wikipedia beschrieben entry on infinity.
Mit dieser Frage habe ich gelernt, dass ein lange oder int-Wert nicht in einen float umgewandelt um den Vergleich von float('inf') > 2**5000
zu vervollständigen. Das wusste ich nicht.
Was ist falsch mit 'float (" inf ")' oder, wenn Sie eine Nummer benötigen, 'sys.float_info.max'? –
IIRC hetrogenous Werte wurden alphabetisch nach dem Namen ihres Typs sortiert - kaum jemals nützlich –
"Python3000 hat sys.maxint auf die Theorie entfernt, dass alle Eingänge zu Longs fördern und das Limit nicht mehr gilt.", Nein, Python3000 hat 'int '* Zeitraum *. Alle ganzen Zahlen sind jetzt "lang", weshalb sie umbenannt wurde. –