Ints জন্য সর্বাধিক এবং সর্বনিম্ন মান


743

আমি পাইথনে পূর্ণসংখ্যার জন্য সর্বনিম্ন এবং সর্বাধিক মান খুঁজছি। যেমন জাভাতে, আমাদের আছে Integer.MIN_VALUEএবং Integer.MAX_VALUE। অজগরে কি এরকম কিছু আছে?


14
দ্রষ্টব্য যে পাইথন 3 এ intটাইপটি মূলত পাইথন 2 তে টাইপের মতো long, তাই সর্বাধিক বা ন্যূনতম ধারণাটি intসম্পূর্ণ অদৃশ্য হয়ে যায়। এটি পাইথন ২
তেও

8
@agf: এটি বিভিন্ন উপায়ে প্রাসঙ্গিক হতে পারে। উদাহরণস্বরূপ যে কোনও অ্যালগরিদমের ক্ষেত্রে খুঁজে পাওয়া ন্যূনতম মানটি সংরক্ষণ করতে হবে (একটি সাজানোর অ্যালগরিদমের মতো)। ন্যূনতম মানটি সিস.ম্যাকসিন্টে শুরু করা যেতে পারে তাই এটি গ্যারান্টি দেয় যে প্রাপ্ত যে কোনও প্রথম মানটি ন্যূনতম হিসাবে নেওয়া হয়েছে
বেসিল পেরেনউড

ছাড়া @Toaster আপনি একটি তালিকা থাকতে পারে যেখানে সব মান চেয়ে অনেক বেশী হয় sys.maxintএটি শুধুমাত্র জন্য সর্বোচ্চ যেহেতু intপাইথন 2 ধরন, যা পাইথন চুপটি একটি হিসাবে পদোন্নতি হবে long
অগফ

29
আপনার যদি একটি অ্যালগরিদমে "খুব বড় মান" ব্যবহার করতে হয়, যেমন ন্যূনতম বা সর্বাধিক জেনেরিক সংগ্রহ সন্ধান করা, float('inf')বা float('-inf')বেশ সহায়ক হতে পারে।
জিওফ

উত্তর:


851

পাইথন ঘ

পাইথন 3 এ, এই প্রশ্নটি প্রযোজ্য নয়। প্লেইন intটাইপ আনবাউন্ডেড।

তবে আপনি সম্ভবত বর্তমান দোভাষীর শব্দের আকার সম্পর্কে তথ্য সন্ধান করছেন যা বেশিরভাগ ক্ষেত্রেই মেশিনের শব্দের আকারের সমান হবে। পাইথন 3-তে এখনও সেই তথ্য পাওয়া যায় sys.maxsizeযা স্বাক্ষরিত শব্দের দ্বারা উপস্থাপনযোগ্য সর্বাধিক মান। সমানভাবে, এটি সর্বাধিক সম্ভাব্য তালিকার আকার বা মেমরির ক্রম

সাধারণত, স্বাক্ষরবিহীন শব্দের দ্বারা উপস্থাপনযোগ্য সর্বাধিক মান হবে sys.maxsize * 2 + 1এবং একটি শব্দের বিটের সংখ্যা হবে math.log2(sys.maxsize * 2 + 2)। আরও তথ্যের জন্য এই উত্তর দেখুন ।

পাইথন 2

পাইথন 2-তে, সমতল intমানের জন্য সর্বাধিক মানটি পাওয়া যায় sys.maxint:

>>> sys.maxint
9223372036854775807

এখানে-sys.maxint - 1 প্রদর্শিত হিসাবে আপনি সর্বনিম্ন মান গণনা করতে পারেন ।

এই মানটি ছাড়িয়ে গেলে পাইথন নির্বিঘ্নে সমতল থেকে দীর্ঘ পূর্ণসংখ্যায় স্যুইচ করে। বেশিরভাগ সময়, আপনার এটি জানা দরকার হবে না।


177
এই সংখ্যাটি নির্বিচারে প্রদর্শিত হতে পারে, তবে তা নয়। 9223372036854775807 হুবহু 2^63 - 1, সুতরাং আপনি একটি 64-বিট int পেয়েছি। সাধারণভাবে, একটি এন-বিট পূর্ণসংখ্যা ছোটো থেকে মান আছে -2^(n-1)করার 2^(n-1) - 1
নাল ইউজারএক্সসেপশন

22
মনে রাখবেন যে আপনি যদি 32-বিট পাইথন রানটাইম ব্যবহার করেন তবে sys.maxint ফিরে আসবে 2^31 - 1, যদিও ডেথটাইপ দিয়ে পাইথন নির্বিঘ্নে 64৪ -বিটে চলে যাবে long
স্কট স্টাফোর্ড

19
sys.maxsizeপরিবর্তে ব্যবহার করুন, @ আকাশ রানা দ্বারা প্রস্তাবিত হিসাবে। এটা তোলে, এছাড়াও পাইথন 2 উপস্থিত যেমন sysডক্স বলে। এটি কোডটি উভয় পাইথন সংস্করণের সাথে আরও সামঞ্জস্য করবে।
আইওনিস ফিলিপিসিস

6
ডক্স থেকে আপনার এবং আমার লাইনটির আলাদা ব্যাখ্যা রয়েছে। প্রতিস্থাপনটি 2to3একটি সূক্ষ্ম দ্রুত এবং মলিন হিউরিস্টিক যা বেশিরভাগ সময় কোনও কিছুতেই ভাঙবে না - তবে এই দুটি মানের মধ্যে পার্থক্য গুরুত্বপূর্ণ। সর্বোত্তম অনুশীলন হ'ল আপনি যে মানটি ব্যবহার করতে চান তা ব্যবহার করা। পাইথন 2-তে আপনার যদি সত্যই দরকার sys.maxint হয় তবে পাইথন 3 এ আপনার আর দরকার হবে না এবং এটি সত্যই পুরোপুরি সরানো উচিত, পরিবর্তিত হয়নি sys.maxsize
প্রেরক

3
মিনিসাইজ - বিটওয়াইজ মিনি অপারেটরের সাথে গুণ করা মাইন সাইজ দেয় ys sys.maxsize
om471987

238

আপনার যদি এমন একটি সংখ্যা প্রয়োজন হয় যা অন্য সকলের চেয়ে বড় হয় তবে আপনি ব্যবহার করতে পারেন

float('inf')

অনুরূপ ফ্যাশনে, অন্য সকলের চেয়ে ছোট একটি সংখ্যা:

float('-inf')

এটি পাইথন 2 এবং 3 উভয় ক্ষেত্রেই কাজ করে।


9
কেবলমাত্র একটি নোট (যেমন এটি অপ্রাসঙ্গিক তবে এখনও): ভাসা ('ইনফ')> ভাসা ('ইনফ') এর ফলস্বরূপ 'মিথ্যা' থাকে। অসীম সংখ্যাটি অন্য অসীম সংখ্যার চেয়ে বড় হওয়া উচিত :
ডি

11
@ এসক্র আপনি আর কী আশা করবেন? x > xসাধারণত হয় False, এবং অনন্ত কোনও ব্যতিক্রম হওয়া উচিত নয়। ( float('NaN), অন্যদিকে ...)
জেমসডলিন

6
এটি আসলে intসতর্কতার জন্য প্রযোজ্য নয় cannot convert infinite float to int... তবে বেশিরভাগ ক্ষেত্রেই কাজ করে
লেইটন

5
নোট যে int('inf')কাজ করে না।
টম হেল

3
এটি ওপি প্রশ্নের কোনও উত্তর নয়
ঘোষ

225

এর sys.maxintপরিবর্তে পাইথন 3.0.০ থেকে ধ্রুবকটি সরানো হয়েছে sys.maxsize

পূর্ণসংখ্যার

  • পিইপি 237: মূলত, দীর্ঘ নাম অন্তর্নিহিত। অর্থাত্, কেবলমাত্র একটি অন্তর্নির্মিত ইন্টিগ্রাল টাইপ রয়েছে, নাম অন্তর্ভুক্ত; তবে এটি বেশিরভাগ পুরানো দীর্ঘ টাইপের মতো আচরণ করে।
  • পিইপি 238: 1/2 এর মত একটি এক্সপ্রেশন একটি ফ্লোট ফেরত দেয় কাটা কাটা আচরণ পেতে 1 // 2 ব্যবহার করুন। (পরের সিনট্যাক্সটি পাইথন ২.২ থেকে কমপক্ষে কয়েক বছর ধরে বিদ্যমান ex)
  • Sys.maxint ধ্রুবকটি সরানো হয়েছে, যেহেতু পূর্ণসংখ্যার মানটির আর সীমা নেই। তবে sys.maxsize কোনও ব্যবহারিক তালিকা বা স্ট্রিং সূচকের চেয়ে বড় হিসাবে পূর্ণসংখ্যার হিসাবে ব্যবহার করা যেতে পারে। এটি বাস্তবায়নের "প্রাকৃতিক" পূর্ণসংখ্যার আকারের সাথে সামঞ্জস্য হয় এবং সাধারণত একই প্ল্যাটফর্মের পূর্ববর্তী রিলিজগুলিতে sys.maxint হিসাবে একই হয় (একই বিল্ড অপশনগুলি ধরে নিয়ে)।
  • দীর্ঘ পূর্ণসংখ্যার রিটার () এতে আর পিছনের এলকে অন্তর্ভুক্ত করে না, সুতরাং কোডটি যে শর্তহীনভাবে সেই চরিত্রটি শেষের অঙ্কটি কেটে ফেলবে। (পরিবর্তে str () ব্যবহার করুন))
  • অক্টাল আক্ষরিক আর 0720 ফর্মের নয়; পরিবর্তে 0o720 ব্যবহার করুন।

উল্লেখ করুন: https://docs.python.org/3/whatnew/3.0.html#integers


1
সঠিক। প্রকৃতপক্ষে, থেকে help(sys): ম্যাক্সেসাইজ - ধারকগুলির বৃহত্তম সমর্থিত দৈর্ঘ্য । এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
মার্কো সুল্লা

77

পাইথন পূর্ণসংখ্যায় একবার স্থির আকারের intউপস্থাপনা থেকে পরিবর্তনশীল প্রস্থের longউপস্থাপনায় পরিবর্তিত হয় যা আপনার প্ল্যাটফর্মের উপর নির্ভর করে sys.maxint2 31 - 1 বা 2 63 - 1 হয় is Lএখানে সংযুক্ত হয়ে যায় তা লক্ষ্য করুন:

>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L

থেকে পাইথন ম্যানুয়াল :

সংখ্যাগুলি সংখ্যাযুক্ত আক্ষরিক দ্বারা বা অন্তর্নির্মিত ফাংশন এবং অপারেটরগুলির ফলাফল হিসাবে তৈরি করা হয়। অবিকৃত পূর্ণসংখ্যার আক্ষরিক (বাইনারি, হেক্স এবং অষ্টাল সংখ্যা সহ) স্পষ্ট পূর্ণসংখ্যার ফলস্বরূপ ফলিত হয় যতক্ষণ না তারা যে মানটিকে বোঝায় সেগুলি প্লেইন পূর্ণসংখ্যার হিসাবে উপস্থাপনের জন্য খুব বড় না হয়, যার ক্ষেত্রে তারা একটি দীর্ঘ পূর্ণসংখ্যার ফলন করে। একটি 'L'বা 'l'প্রত্যয় পাওয়া পূর্ণসংখ্যার সাথে পূর্ণসংখ্যার লিটারালগুলি 'L'পছন্দ হয় ( কারণ এটি 1lএগারোর মতো দেখতে বেশি লাগে!)।

পাইথন তার পূর্ণসংখ্যাগুলি গাণিতিক পূর্ণসংখ্যা এবং আনবাউন্ডেড না করার খুব চেষ্টা করে। এটি উদাহরণস্বরূপ, সহজেই একটি গুগল গণনা করতে পারে:

>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L

36
বিভ্রান্তি যোগ করার জন্য, পাইথন longজাভা এর মতো নয় long- এটি বরং আরও কাছাকাছি BigInteger
নুল ইউজারএক্সেপশন

পাইথন 3-তে, মনে হয় কোন Lপ্রত্যয় নেই এবং এটি সংখ্যাটি কত বড় তা বিবেচনা করেই ঠিক int, তা নয় long
এরিক ওয়াং

39

পাইথন 3 এর জন্য, এটি

import sys
max = sys.maxsize
min = -sys.maxsize - 1

3
পাইথন 3 এর অস্তিত্ব নেই। দেখতে stackoverflow.com/questions/13795758/...
netskink

33
ভাল, অজগর 3 উপস্থিত রয়েছে , ধন্যবাদ (!); তবে sys.maxintঅজগর 3 (tl; dr: "এsys.maxintsys.maxsize অস্তিত্ব নেই, " ধ্রুবকটি সরানো হয়েছিল (পাইথন 3 তে), যেহেতু পূর্ণসংখ্যার মানটির সীমাবদ্ধতা আর নেই However তবে কোনও ব্যবহারিক তালিকা বা স্ট্রিংয়ের চেয়ে বড় পূর্ণসংখ্যা হিসাবে ব্যবহার করা যেতে পারে সূচী। " )
মাইকেল 25

2
কেন ছায়া যেমন বিল্টিনগুলি তৈরি করে min()এবং max()?
রোডআরনার - এমএসএফটি

1
2 এর প্রশংসা বাইনারি দেখুন
নেটস্কিং

2
min = ~sys.maxsize
অ্যান্ড্রু


5

আপনি যদি অ্যারে বা তালিকার সূচকের জন্য সর্বাধিক চান ( size_tসি / সি ++ এর সমতুল্য ), তবে আপনি ন্যূন্য ব্যবহার করতে পারেন:

np.iinfo(np.intp).max

এই হিসাবে একই sys.maxsize তবে সুবিধাটি হ'ল কেবল এর জন্য আপনার দরকার হয় আমদানি sys।

আপনি যদি মেশিনে নেটিভ ইন্টের জন্য সর্বোচ্চ চান:

np.iinfo(np.intc).max

আপনি দস্তাবেজের অন্যান্য উপলভ্য প্রকারগুলি দেখতে পারেন ।

ফ্লোটগুলির জন্য আপনিও ব্যবহার করতে পারেন sys.float_info.max


2

আমি এরকম কমান্ডগুলিতে প্রচুর নির্ভর করি।

python -c 'import sys; print(sys.maxsize)'

সর্বাধিক প্রত্যাবর্তন ফিরে এসেছে: 9223372036854775807

'সিস' এর জন্য আরও রেফারেন্সের জন্য আপনার অ্যাক্সেস করা উচিত

https://docs.python.org/3/library/sys.html

https://docs.python.org/3/library/sys.html#sys.maxsize


1
না - ম্যাক্সিজাইজ হ'ল সহজতম কনটেইনার সূচক। পাইথন সুখে 100 ডিজিটের পূর্ণসংখ্যাসহ আরও বেশি কিছু নিয়ে কাজ করবে
টনি সাফলক 66
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.