638
votes

How can I represent an infinite number in python? No matter which number you enter in the program, no number should be greater than this representation of infinity.

8
math.inf is useful as an initial value in optimisation problems, because it works correctly with min, eg. min(5, math.inf) == 5. For example, in shortest path algorithms, you can set unknown distances to math.inf without needing to special case None or assume an upper bound 9999999. Similarly, you can use -math.inf as a starting value for maximisation problems. - Colonel Panic
In most cases, an alternative to using math.inf in optimization problems is to start with the first value. - Tobias Bergkvist

8 Answers

789
votes

In Python, you can do:

test = float("inf")

In Python 3.5, you can do:

import math
test = math.inf

And then:

test > 1
test > 10000
test > x

Will always be true. Unless of course, as pointed out, x is also infinity or "nan" ("not a number").

Additionally (Python 2.x ONLY), in a comparison to Ellipsis, float(inf) is lesser, e.g:

float('inf') < Ellipsis

would return true.

94
votes

Since Python 3.5 you can use math.inf:

>>> import math
>>> math.inf
inf
69
votes

No one seems to have mentioned about the negative infinity explicitly, so I think I should add it.

For negative infinity:

-math.inf

For positive infinity (just for the sake of completeness):

math.inf
31
votes

I don't know exactly what you are doing, but float("inf") gives you a float Infinity, which is greater than any other number.

27
votes

There is an infinity in the NumPy library: from numpy import inf. To get negative infinity one can simply write -inf.

25
votes

Another, less convenient, way to do it is to use Decimal class:

from decimal import Decimal
pos_inf = Decimal('Infinity')
neg_inf = Decimal('-Infinity')
14
votes

In python2.x there was a dirty hack that served this purpose (NEVER use it unless absolutely necessary):

None < any integer < any string

Thus the check i < '' holds True for any integer i.

It has been reasonably deprecated in python3. Now such comparisons end up with

TypeError: unorderable types: str() < int()
8
votes

Also if you use SymPy you can use sympy.oo

>>> from sympy import oo
>>> oo + 1
oo
>>> oo - oo
nan

etc.