Comment représenter un nombre infini en python? Quel que soit le nombre que vous entrez dans le programme, aucun nombre ne doit être supérieur à cette représentation de l'infini.
Comment représenter un nombre infini en python? Quel que soit le nombre que vous entrez dans le programme, aucun nombre ne doit être supérieur à cette représentation de l'infini.
Réponses:
En Python, vous pouvez faire:
test = float("inf")
En Python 3.5, vous pouvez faire:
import math
test = math.inf
Et alors:
test > 1
test > 10000
test > x
Sera toujours vrai. Sauf bien sûr, comme indiqué, x est aussi infini ou "nan" ("pas un nombre").
De plus (Python 2.x UNIQUEMENT), par rapport à Ellipsis, float(inf)est moindre, par exemple:
float('inf') < Ellipsis
reviendrait vrai.
Ellipsis, ce qui se compare plus que tout, y compris l'infini. float("inf") < Ellipsisrenvoie True
math.inf < ...ou float('inf') > Ellipsisjette un TypeError: unorderable types: float() < ellipsis(), au moins pour moi.
Je ne sais pas exactement ce que vous faites, mais float("inf")vous donne un flottant Infinity, qui est supérieur à tout autre nombre.
Il y a une infinité dans la bibliothèque NumPy: from numpy import inf. Pour obtenir l'infini négatif, il suffit d'écrire -inf.
Une autre façon, moins pratique, de le faire est d'utiliser la Decimalclasse:
from decimal import Decimal
pos_inf = Decimal('Infinity')
neg_inf = Decimal('-Infinity')
Decimal('Infinity') == float('inf')revient True, donc c'est à peu près la même chose.
float('inf') is float('inf')revient Falseaussi
float('inf') is float('inf')-> False, juste soutient que ce sont des objets différents avec différentes instances, mais pas que le contenu interne sont différentes - en fait comme @nemesisdesign pointu float('int') == float('int')tient à True. C'est le même problème que de comparer des objets mutables comme [1,2,3] est [1,2,3] et [1,2,3] == [1,2,3], qui sont, dans l'ordre, Faux and True .. Plus d'informations voir: stackoverflow.com/questions/2988017/…
Dans python2.x, il y avait un hack sale qui servait à cet effet (NE JAMAIS l'utiliser sauf si absolument nécessaire):
None < any integer < any string
Ainsi, la vérification i < ''est valable Truepour tout entier i.
Il a été raisonnablement déprécié en python3. Maintenant, ces comparaisons se retrouvent avec
TypeError: unorderable types: str() < int()
MIN_INFINITY = None; INFINITY = "inf"; MIN_INFINITY < x < INFINITY
De plus, si vous utilisez SymPy, vous pouvez utiliser sympy.oo
>>> from sympy import oo
>>> oo + 1
oo
>>> oo - oo
nan
etc.
math.infest utile comme valeur initiale dans les problèmes d'optimisation, car il fonctionne correctement avec min, par exemple.min(5, math.inf) == 5. Par exemple, dans les algorithmes de chemin le plus court, vous pouvez définir des distances inconnues àmath.infsans avoir besoin de cas particulierNoneou supposer une limite supérieure9999999. De même, vous pouvez utiliser-math.infcomme valeur de départ pour les problèmes de maximisation.