Как я могу представить бесконечное число в Python? Независимо от того, какое число вы вводите в программе, ни одно число не должно быть больше, чем это представление бесконечности.
Как я могу представить бесконечное число в Python? Независимо от того, какое число вы вводите в программе, ни одно число не должно быть больше, чем это представление бесконечности.
Ответы:
В Python вы можете сделать:
test = float("inf")
В Python 3.5 вы можете сделать:
import math
test = math.inf
А потом:
test > 1
test > 10000
test > x
Всегда будет правдой Если, конечно, как указано, x также является бесконечностью или «nan» («не число»).
Кроме того (ТОЛЬКО для Python 2.x), по сравнению с Ellipsis
, float(inf)
меньше, например:
float('inf') < Ellipsis
вернул бы истину.
Ellipsis
, который сравнивает больше, чем все, включая бесконечность. float("inf") < Ellipsis
возвращает True
math.inf < ...
или float('inf') > Ellipsis
выкидывает TypeError: unorderable types: float() < ellipsis()
, по крайней мере, для меня.
Я не знаю точно, что вы делаете, но float("inf")
дает вам бесконечность с плавающей точкой, которая больше, чем любое другое число.
Существует бесконечное в библиотеке NumPy: from numpy import inf
. Чтобы получить отрицательную бесконечность, можно просто написать -inf
.
Другой, менее удобный способ сделать это - использовать Decimal
класс:
from decimal import Decimal
pos_inf = Decimal('Infinity')
neg_inf = Decimal('-Infinity')
Decimal('Infinity') == float('inf')
возвращается True
, так что это почти то же самое.
float('inf') is float('inf')
возвращаетсяFalse
float('inf') is float('inf')
-> False
, просто считаю , что они являются различными объектами с различными экземплярами, но не о том , что внутреннее содержание различно - на самом деле , как @nemesisdesign заостренной float('int') == float('int')
держится True
. Это та же проблема, что и сравнение изменяемых объектов, таких как [1,2,3], [1,2,3] и [1,2,3] == [1,2,3], которые по порядку ложные. и правда .. Больше информации смотрите: stackoverflow.com/questions/2988017/…
В python2.x был грязный хак, который служил этой цели (НИКОГДА не используйте его, если это абсолютно не нужно):
None < any integer < any string
Таким образом, проверка i < ''
выполняется True
для любого целого числа i
.
Это было разумно устарело в python3. Теперь такие сравнения заканчиваются
TypeError: unorderable types: str() < int()
MIN_INFINITY = None; INFINITY = "inf"; MIN_INFINITY < x < INFINITY
Также, если вы используете SymPy, вы можете использовать sympy.oo
>>> from sympy import oo
>>> oo + 1
oo
>>> oo - oo
nan
и т.п.
math.inf
полезен в качестве начального значения в задачах оптимизации, потому что он работает правильно с min, например.min(5, math.inf) == 5
, Например, в алгоритмах кратчайшего пути вы можете установить неизвестные расстояния,math.inf
не прибегая к специальному случаю,None
или принять верхнюю границу9999999
. Точно так же вы можете использовать-math.inf
в качестве начального значения для задач максимизации.