如何在python中表示无穷大?无论您在程序中输入哪个数字,任何数字都不得大于此无穷大表示形式。
在大多数情况下,在优化问题中使用math.inf的替代方法是从第一个值开始。
—
Tobias Bergkvist
如何在python中表示无穷大?无论您在程序中输入哪个数字,任何数字都不得大于此无穷大表示形式。
Answers:
在Python中,您可以执行以下操作:
test = float("inf")
在Python 3.5中,您可以执行以下操作:
import math
test = math.inf
然后:
test > 1
test > 10000
test > x
永远是真的。当然,除非指出,否则x也是无穷大或“ nan”(“非数字”)。
另外(Python的ONLY 2.X)中,在比较Ellipsis
,float(inf)
较小,例如:
float('inf') < Ellipsis
将返回true。
Ellipsis
,则它也不是真的,它比所有东西(包括无穷大)进行比较。 float("inf") < Ellipsis
返回True
math.inf < ...
或者至少对我来说float('inf') > Ellipsis
抛出TypeError: unorderable types: float() < ellipsis()
。
有一个在与NumPy库的无边:from numpy import inf
。要获得负无穷大,可以简单地写-inf
。
另一种较不方便的方法是使用Decimal
类:
from decimal import Decimal
pos_inf = Decimal('Infinity')
neg_inf = Decimal('-Infinity')
Decimal('Infinity') == float('inf')
return 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]之类的可变对象,这些对象依次为False和True ..更多信息见:stackoverflow.com/questions/2988017/...
在python2.x中,有一个肮脏的hack可以达到这个目的(除非绝对必要,否则不要使用它):
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
用作最大化问题的起始值。