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.
EllipsisSonsuzluk da dahil olmak üzere her şeyden daha büyük olan x yerleşikse de doğru olmaz . float("inf") < EllipsisTrue döndürür
math.inf < ...veya float('inf') > Ellipsisatar 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, Decimalsı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 .Truei
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.infoptimizasyon 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 duymadanNoneveya bir üst sınır varsaymadan ayarlayabilirsiniz9999999. Benzer şekilde,-math.infmaksimizasyon problemleri için başlangıç değeri olarak kullanabilirsiniz .