मैं अजगर में एक अनंत संख्या का प्रतिनिधित्व कैसे कर सकता हूं? कोई भी बात जो आप कार्यक्रम में दर्ज करते हैं, कोई भी संख्या अनंत के इस प्रतिनिधित्व से अधिक नहीं होनी चाहिए।
मैं अजगर में एक अनंत संख्या का प्रतिनिधित्व कैसे कर सकता हूं? कोई भी बात जो आप कार्यक्रम में दर्ज करते हैं, कोई भी संख्या अनंत के इस प्रतिनिधित्व से अधिक नहीं होनी चाहिए।
जवाबों:
पायथन में, आप कर सकते हैं:
test = float("inf")
पायथन 3.5 में, आप कर सकते हैं:
import math
test = math.inf
और तब:
test > 1
test > 10000
test > x
हमेशा सच रहेगा। जब तक निश्चित रूप से, जैसा कि बताया गया है, x भी अनंत या "नेन" ("संख्या नहीं") है।
इसके अतिरिक्त (अजगर केवल 2.x), के लिए एक तुलना में Ellipsis, float(inf)कम है, जैसे:
float('inf') < Ellipsis
सच हो जाएगा।
Ellipsis, जिसमें अनंत सहित हर चीज की तुलना में अधिक है। float("inf") < Ellipsisसही रिटर्न
math.inf < ...या कम से कम मेरे लिए float('inf') > Ellipsisफेंकता है TypeError: unorderable types: float() < ellipsis()।
मुझे नहीं पता कि आप क्या कर रहे हैं, लेकिन float("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], जो क्रम में हैं, गलत हैं। और सच .. अधिक जानकारी देखें: stackoverflow.com/questions/2988017/…
Python2.x में एक गंदा हैक था जो इस उद्देश्य को पूरा करता था (जब तक इसका उपयोग आवश्यक नहीं हो):
None < any integer < any string
इस प्रकार की जांच i < ''रखती है Trueकिसी भी पूर्णांक के लिए i।
यह यथोचित रूप से अजगर 3 में पदावनत किया गया है। अब इस तरह की तुलनाएं खत्म हो गई हैं
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(5, math.inf) == 5। उदाहरण के लिए, कम से कम पथ एल्गोरिदम में, आपmath.infविशेष मामले की आवश्यकता के बिना अज्ञात दूरी तय कर सकते हैंNoneया ऊपरी बाध्य मान सकते हैं9999999। इसी तरह, आप-math.infअधिकतम समस्याओं के लिए शुरुआती मूल्य के रूप में उपयोग कर सकते हैं ।