पायथन 3 में sys.maxint क्या है?


162

मैं यह पता लगाने की कोशिश कर रहा हूं कि अधिकतम पूर्णांक का प्रतिनिधित्व कैसे करें, और मैंने उपयोग करने के लिए पढ़ा है "sys.maxint"। हालाँकि, पायथन 3 में जब मैं कहता हूं कि मुझे यह मिल गया है:

AttributeError: module 'object' has no attribute 'maxint'

जवाबों:


172

Sys.maxint स्थिरांक को हटा दिया गया था, क्योंकि पूर्णांकों के मान की कोई सीमा नहीं है। हालाँकि, sys.maxsize को किसी भी व्यावहारिक सूची या स्ट्रिंग इंडेक्स से बड़े पूर्णांक के रूप में उपयोग किया जा सकता है। यह कार्यान्वयन के "प्राकृतिक" पूर्णांक आकार के अनुरूप है और आम तौर पर एक ही मंच पर पिछले रिलीज़ में sys.maxint के समान है (एक ही बिल्ड विकल्प मानते हुए)।

http://docs.python.org/3.1/whatsnew/3.0.html#integers


79

जैसा कि दूसरों द्वारा बताया गया है, पायथन 3 का intअधिकतम आकार नहीं है, लेकिन अगर आपको किसी ऐसी चीज की आवश्यकता है जो किसी अन्य intमूल्य से अधिक होने की गारंटी है , तो आप इन्फिनिटी के लिए फ्लोट मूल्य का उपयोग कर सकते हैं, जिसे आप प्राप्त कर सकते हैं float("inf")


विरासत पायथन (2.7) के साथ भी काम करता है - यह सही उत्तर है जब आपको सभी संभावित वास्तविक मूल्यों (उदाहरण के लिए वस्तुओं की तुलना करके छँटाई करने वाली सूची) की तुलना में अधिक संख्या में वापस करने की आवश्यकता होती है
हारून डी

3
इस दृष्टिकोण का एक नकारात्मक पक्ष यह है कि फ्लोट इन यदि आप सुंबा या साइथन या इसी तरह के साथ जेट संकलन लागू करने की कोशिश कर रहे हैं, तो डेटा प्रकार के सरणियों को बर्बाद कर सकते हैं। आपको सभी पूर्णांक प्रकारों के पायथन सूची की आवश्यकता हो सकती है ताकि एक उदाहरण के लिए एक जेट कंपाइलर स्वचालित रूप से इसे उपयुक्त सी प्रकार में परिवर्तित कर सके। यह शास्त्रीय एल्गोरिदम के लिए विशेष रूप से महत्वपूर्ण है, जहां आप उन्हें शुद्ध पायथन कार्यान्वयन की तुलना में बहुत तेज बनाने के लिए जीट उपकरण लागू कर सकते हैं, लेकिन फिर भी जीआई संकलक एक तैनात वातावरण में स्थापित नहीं होने पर, सुविधा, परीक्षण, फॉलबैक के लिए शुद्ध पायथन में कार्यान्वयन लिखना चाहते हैं। इत्यादि
ely

24

अजगर 3 किलों में अधिकतम नहीं होता है।

यदि आपका उद्देश्य सी में एक इंट के अधिकतम आकार को निर्धारित करना है जब पाइथन उसी तरह संकलित किया गया था, तो आप पता लगाने के लिए संरचना मॉड्यूल का उपयोग कर सकते हैं:

>>> import struct
>>> platform_c_maxint = 2 ** (struct.Struct('i').size * 8 - 1) - 1

यदि आप पायथन 3 इंट ऑब्जेक्ट्स के आंतरिक कार्यान्वयन विवरण के बारे में उत्सुक हैं, तो sys.int_infoबिट्स प्रति अंक और अंक आकार विवरण देखें। किसी भी सामान्य कार्यक्रम को इन पर ध्यान नहीं देना चाहिए।


18

यदि आप एक ऐसी संख्या की तलाश कर रहे हैं जो अन्य सभी की तुलना में बड़ी है:

विधि 1:

float('inf')

विधि 2:

import sys
max = sys.maxsize

यदि आप एक ऐसी संख्या की तलाश कर रहे हैं जो अन्य सभी की तुलना में छोटी है:

विधि 1:

float('-inf')

विधि 2:

import sys
min = -sys.maxsize - 1

विधि 1 Python2 और Python3 दोनों में काम करती है। विधि 2 पायथन 3 में काम करती है। मैंने पायथन 2 में विधि 2 की कोशिश नहीं की है।


3

पायथन 3.0 में किसी भी अधिक sys.maxint नहीं है क्योंकि पायथन 3 के इन्टस मनमानी लंबाई के हैं। Sys.maxint के बजाय इसमें sys.maxsize है; एक सकारात्मक आकार का अधिकतम आकार size_t उर्फ ​​Py_ssize_t।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.