Python'da sonsuz bir sayıyı nasıl temsil edebilirim? Programa hangi sayıyı girerseniz girin, hiçbir sayı sonsuzluğun bu gösteriminden daha büyük olamaz.
Python'da sonsuz bir sayıyı nasıl temsil edebilirim? Programa hangi sayıyı girerseniz girin, hiçbir sayı sonsuzluğun bu gösteriminden daha büyük olamaz.
Yanıtlar:
Python'da şunları yapabilirsiniz:
test = float("inf")
Python 3.5'te şunları yapabilirsiniz:
import math
test = math.inf
Ve sonra:
test > 1
test > 10000
test > x
Her zaman doğru olacak. Elbette belirtildiği gibi, x ayrıca sonsuzluk veya "nan" dir ("bir sayı değil").
Ayrıca bir karşılaştırma, (Python SADECE 2.x) Ellipsis
, float(inf)
daha az olduğunu, örneğin:
float('inf') < Ellipsis
doğru dönecekti.
Ellipsis
Sonsuzluk da dahil olmak üzere her şeyden daha büyük olan x yerleşikse de doğru olmaz . float("inf") < Ellipsis
True döndürür
math.inf < ...
veya float('inf') > Ellipsis
atar TypeError: unorderable types: float() < ellipsis()
.
Ne yaptığınızı tam olarak bilmiyorum, ama float("inf")
size başka bir sayıdan daha büyük bir kayan Sonsuzluk veriyor.
NumPy kütüphanesinde bir sonsuzluk vardır: from numpy import inf
. Negatif sonsuzluğu elde etmek için yazmak yeterlidir -inf
.
Bunu yapmanın bir başka, daha az kullanışlı yolu, Decimal
sınıfı kullanmaktır :
from decimal import Decimal
pos_inf = Decimal('Infinity')
neg_inf = Decimal('-Infinity')
Decimal('Infinity') == float('inf')
geri dönüyor True
, bu yüzden hemen hemen aynı.
float('inf') is float('inf')
geri döndüFalse
float('inf') is float('inf')
-> False
, sadece farklı örneklere sahip farklı nesneler olduklarını, ancak iç içeriğin farklı olmadığını - aslında @ nemesisdesign'ın işaret float('int') == float('int')
ettiği gibi True
. Bu, [1,2,3] ve [1,2,3] ve [1,2,3] == [1,2,3] gibi değişken nesneleri karşılaştırmak gibi aynı problemdir. and True .. Daha fazla bilgi için: stackoverflow.com/questions/2988017/…
Python2.x'te bu amaca hizmet eden kirli bir kesmek vardı (kesinlikle gerekli olmadıkça ASLA kullanmayın):
None < any integer < any string
Böylece kontrol herhangi bir tamsayı i < ''
tutar .True
i
Python3'te makul bir şekilde kullanımdan kaldırılmıştır. Şimdi bu karşılaştırmalar
TypeError: unorderable types: str() < int()
MIN_INFINITY = None; INFINITY = "inf"; MIN_INFINITY < x < INFINITY
Ayrıca SymPy kullanıyorsanız sympy.oo
>>> from sympy import oo
>>> oo + 1
oo
>>> oo - oo
nan
vb.
math.inf
optimizasyon problemlerinde başlangıç değeri olarak kullanışlıdır, çünkü min ile doğru şekilde çalışır, örn.min(5, math.inf) == 5
. Örneğin, en kısa yol algoritmalarında, bilinmeyen mesafelerimath.inf
özel bir duruma gerek duymadanNone
veya bir üst sınır varsaymadan ayarlayabilirsiniz9999999
. Benzer şekilde,-math.inf
maksimizasyon problemleri için başlangıç değeri olarak kullanabilirsiniz .