Як я можу представити нескінченне число в пітоні? Незалежно від того, яке число ви введете в програму, жодне число не повинно бути більшим, ніж це представлення нескінченності.
Як я можу представити нескінченне число в пітоні? Незалежно від того, яке число ви введете в програму, жодне число не повинно бути більшим, ніж це представлення нескінченності.
Відповіді:
У Python ви можете:
test = float("inf")
У Python 3.5 ви можете:
import math
test = math.inf
І потім:
test > 1
test > 10000
test > x
Завжди буде правдою. Якщо звичайно, як зазначалося, x також є нескінченністю або "nan" ("не число").
Додатково (Python 2.x ONLY), в порівнянні з Ellipsis
, float(inf)
є меншою, наприклад:
float('inf') < Ellipsis
повернеться правдою.
Ellipsis
, який порівнює більше за все, включаючи нескінченність. float("inf") < Ellipsis
повертається True
math.inf < ...
чи float('inf') > Ellipsis
кидає а TypeError: unorderable types: float() < ellipsis()
, принаймні для мене.
Я точно не знаю, що ви робите, але float("inf")
дає вам плаваючу Нескінченність, яка більша за будь-яке інше число.
Існує нескінченна в бібліотеці NumPy: from numpy import inf
. Щоб отримати негативну нескінченність, можна просто написати -inf
.
Ще один, менш зручний спосіб - це використовувати Decimal
клас:
from decimal import Decimal
pos_inf = Decimal('Infinity')
neg_inf = Decimal('-Infinity')
Decimal('Infinity') == float('inf')
повертається True
, значить, це майже те саме.
float('inf') is float('inf')
повертається False
теж
float('inf') is float('inf')
-> False
, просто вважаю , що вони є різними об'єктами з різними екземплярами, але не про те , що внутрішнє зміст по-різному - на насправді , як @nemesisdesign загостреною float('int') == float('int')
тримається True
. Це та сама проблема, як порівняння змінних об'єктів на зразок [1,2,3] є [1,2,3] і [1,2,3] == [1,2,3], які, по порядку, є помилковими та True .. Детальніше дивіться: stackoverflow.com/questions/2988017/…
У python2.x був брудний злом, який слугував цій цілі (НІКОЛИ не використовуйте його, якщо це абсолютно не потрібно):
None < any integer < any string
Таким чином, чек i < ''
має місце True
для будь-якого цілого числа i
.
У python3 вона була досить застарілою. Зараз такі порівняння закінчуються
TypeError: unorderable types: str() < int()
MIN_INFINITY = None; INFINITY = "inf"; MIN_INFINITY < x < INFINITY
Крім того, якщо ви використовуєте SymPy, ви можете використовувати sympy.oo
>>> from sympy import oo
>>> oo + 1
oo
>>> oo - oo
nan
тощо.
math.inf
є корисним як початкове значення при проблемах з оптимізацією, оскільки воно працює правильно з min, наприклад.min(5, math.inf) == 5
. Наприклад, в алгоритмах найкоротшого шляху ви можете встановлювати невідомі відстані,math.inf
не потребуючи спеціального випадкуNone
або припускати верхню межу9999999
. Аналогічно, ви можете використовувати-math.inf
як вихідне значення для максимізації проблем.