Como posso representar um número infinito em python? Independentemente do número digitado no programa, nenhum número deve ser maior que essa representação do infinito.
Como posso representar um número infinito em python? Independentemente do número digitado no programa, nenhum número deve ser maior que essa representação do infinito.
Respostas:
No Python, você pode fazer:
test = float("inf")
No Python 3.5, você pode fazer:
import math
test = math.inf
E depois:
test > 1
test > 10000
test > x
Sempre será verdade. A menos, é claro, como apontado, x também é infinito ou "nan" ("não é um número").
Além disso (apenas em Python 2.x), em comparação com Ellipsis, float(inf)é menor, por exemplo:
float('inf') < Ellipsis
retornaria verdadeiro.
Ellipsis, o que compara mais do que tudo, incluindo o infinito. float("inf") < Ellipsisretorna True
math.inf < ...ou float('inf') > Ellipsisjoga um TypeError: unorderable types: float() < ellipsis(), pelo menos para mim.
Não sei exatamente o que você está fazendo, mas float("inf")fornece um infinito flutuante, que é maior que qualquer outro número.
Há uma infinidade na biblioteca NumPy: from numpy import inf. Para obter infinito negativo, basta escrever -inf.
Outra maneira, menos conveniente, de fazer isso é usar a Decimalclasse:
from decimal import Decimal
pos_inf = Decimal('Infinity')
neg_inf = Decimal('-Infinity')
Decimal('Infinity') == float('inf')retorna True, então é praticamente o mesmo.
float('inf') is float('inf')retornaFalse
float('inf') is float('inf')-> False, apenas afirma que eles são diferentes objetos com diferentes instâncias, mas não que o conteúdo interno são diferentes - na verdade como @nemesisdesign pontas float('int') == float('int')detém a True. Esse é o mesmo problema, como comparar objetos mutáveis como [1,2,3] é [1,2,3] e [1,2,3] == [1,2,3], que são, em ordem, False e True .. Mais informações em: stackoverflow.com/questions/2988017/…
No python2.x, havia um hack sujo que atendia a esse propósito (NUNCA use-o, a menos que seja absolutamente necessário):
None < any integer < any string
Assim, a verificação i < ''vale Truepara qualquer número inteiro i.
Foi razoavelmente obsoleto no python3. Agora, essas comparações terminam com
TypeError: unorderable types: str() < int()
MIN_INFINITY = None; INFINITY = "inf"; MIN_INFINITY < x < INFINITY
Além disso, se você usa o SymPy, pode usar sympy.oo
>>> from sympy import oo
>>> oo + 1
oo
>>> oo - oo
nan
etc.
math.infé útil como valor inicial em problemas de otimização, porque funciona corretamente com min, por exemplo.min(5, math.inf) == 5. Por exemplo, nos algoritmos de caminho mais curto, você pode definir distâncias desconhecidasmath.infsem precisar de um caso especialNoneou assumir um limite superior9999999. Da mesma forma, você pode usar-math.infcomo um valor inicial para problemas de maximização.