파이썬에서 무한한 숫자를 어떻게 나타낼 수 있습니까?


558

파이썬에서 무한한 숫자를 어떻게 나타낼 수 있습니까? 프로그램에 입력 한 숫자에 관계없이이 숫자는 무한대 표시보다 커야합니다.


29
math.inf예를 들어 min과 올바르게 작동하기 때문에 최적화 문제의 초기 값으로 유용합니다. min(5, math.inf) == 5. 예를 들어 최단 경로 알고리즘에서 math.inf특별한 경우 None나 상한을 가정 하지 않고도 알 수없는 거리를 설정할 수 있습니다 9999999. 마찬가지로 -math.inf최대화 문제의 시작 값으로 사용할 수 있습니다 .
Colonic Panic

대부분의 경우 최적화 문제에서 math.inf를 사용하는 대안은 첫 번째 값으로 시작하는 것입니다.
Tobias Bergkvist

답변:


706

파이썬에서는 다음을 수행 할 수 있습니다.

test = float("inf")

Python 3.5에서는 다음을 수행 할 수 있습니다.

import math
test = math.inf

그리고:

test > 1
test > 10000
test > x

항상 사실입니다. 물론, 지적되지 않은 한, x는 또한 무한대 또는 "nan"( "숫자가 아님")이다.

또한에 비해, (파이썬 만 2.x으로) Ellipsis, float(inf)적은이다, 예를 들면 :

float('inf') < Ellipsis

사실을 반환합니다.


15
그리고 x도 inf라면 사실이 아닙니다.
Maxim Egorushkin

5
무한대는 모든 현대 언어에 의존 하는 표준 IEEE 754-1985 ( en.wikipedia.org/wiki/IEEE_754-1985 )에 정의되어 있습니다. 또 다른 요점은이 규범에 따르면 무한대는 부동 소수점 숫자 여야합니다. 이것은 왜 파이썬이이 어색한 구문을 선택했는지 설명 할 수 있습니다.
quickbug

3
x가 내장 인 경우 Ellipsis무한대를 포함하여 모든 것보다 큰 경우도 마찬가지 입니다. float("inf") < Ellipsis
Singletoned

2
적어도 하나는 확실하지 math.inf < ...않거나 적어도 나에게 float('inf') > Ellipsis던집니다 TypeError: unorderable types: float() < ellipsis().
Peter Goldsborough

2
나는 3.5에 있습니다. 아마 2.x / 3.x 것입니다.
Peter Goldsborough

80

Python 3.5부터 다음을 사용할 수 있습니다 math.inf.

>>> import math
>>> math.inf
inf

47

음의 무한대에 대해 명시 적으로 언급 한 사람이 없으므로 추가해야한다고 생각합니다.

양의 무한대 (완전성을 위해) :

math.inf

음의 무한대 :

-math.inf

30

나는 당신이 무엇을하고 있는지 정확히 알지 못하지만 float("inf")부동 수 무한대를 제공합니다.


27

NumPy 라이브러리에는 무한대가 있습니다 from numpy import inf. 음의 무한대를 얻으려면 간단히 쓸 수 있습니다 -inf.


24

덜 편리한 또 다른 방법은 Decimal클래스 를 사용하는 것입니다 .

from decimal import Decimal
pos_inf = Decimal('Infinity')
neg_inf = Decimal('-Infinity')

21
왜 편리하지 않은 이유와 왜 그것을 사용해야 하는지를 추가하지 않습니까?
Niccolò

4
보시다 : Decimal('Infinity') == float('inf')returns True, 그것은 거의 같습니다.
Denis Malinovsky

8
@afzal_SH의 float('inf') is float('inf')수익률 False
nemesisdesign

4
무한대는 그 자체와도 다르므로 귀하의 의견은 저에게 이해가되지 않았습니다, IMHO
nemesisdesign

5
float('inf') is float('inf')-> False, 단지 그들이 다른 인스턴스와 다른 개체라는 것을하지만 내부 내용이 다릅니다하지 않는 것이 보유 - 뾰족한 @nemesisdesign 사실로 float('int') == float('int')에 보유 True. 이것은 [1,2,3]과 [1,2,3], [1,2,3] == [1,2,3]과 같은 가변 객체를 비교하는 것과 같은 문제입니다. and True .. 자세한 정보는 다음을 참조하십시오 : stackoverflow.com/questions/2988017/…
Manoel Vilela

13

python2.x에는 이러한 목적을 달성 한 더티 해킹이있었습니다 (절대적으로 필요한 경우가 아니면 절대 사용하지 마십시오).

None < any integer < any string

따라서 검사 i < ''True정수를 유지 합니다 i.

python3에서는 합리적으로 사용되지 않습니다. 이제 그러한 비교는

TypeError: unorderable types: str() < int()

5
당신이 정말로 이것을 사용한다면, 적어도 다음과 같은 읽을 수있는 이름으로 그것을 감싸십시오 :MIN_INFINITY = None; INFINITY = "inf"; MIN_INFINITY < x < INFINITY
Ali Rasim Kocal

5
그러나 이것을 사용할 필요는 없습니다.
Joost

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.