Python 2.x позволяет сравнивать гетерогенные типы.Python: Полезные значения Max и Min
Полезный ярлык (в 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 has removedsys.maxint
на теории, что все Интс не способствуют долгот и предел больше не применяется.
PEP 326, Корпус для верхних и нижних значений, расширенный параметр min и max в Python. Новое поведение порядка documented.
С тех пор как PEP 326 был отклонен, какие полезные, пригодные для использования определения для значения min и max, которые работают с целыми числами и плаваниями и longs на Python 2X и Python 3000?
Редактировать
Несколько ответов по линии «просто использовать MAXV = поплавок („инф“)» ... Поэтому я имею в виду, однако удаленный возможность, это:
>>> 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('inf')
, длинные значения должны быть преобразованы в поплавок и преобразование вызовет OverflowError
...
Заключения
Спасибо всем для ваших ответов и комментариев. Я выбрал TryPyPy-х answer, потому что это казалось наиболее рядный с тем, что я спрашивал: абсолютное наибольшее и абсолютное наименьшее значение, как описано в Википедии entry on infinity.
С этим вопросом, я узнал, что длинный или INT значение не преобразуется в поплавок чтобы завершить сравнение float('inf') > 2**5000
. Я не знал этого.
Что случилось с 'поплавка («инф»)' или, если вам нужен номер, 'sys.float_info.max'? –
IITR hetrogeneous values, где упорядочено по алфавиту по названию их типа - вряд ли когда-либо полезно –
«Python3000 удалил sys.maxint по теории, что все ints продвигаются к longs, и лимит больше не применяется». Нет, Python3000 удалил 'int '* период *. Все целые числа теперь 'long', поэтому он был переименован. –