অ্যারে হল C/C++, Java ইত্যাদিতে একটি খুব জনপ্রিয় ডেটা স্ট্রাকচার। এই ভাষাগুলিতে অ্যারেকে একই ধরনের ডেটা টাইপের একাধিক উপাদানের সংগ্রহ হিসাবে সংজ্ঞায়িত করা হয়। পাইথনের কোনো বিল্ট-ইন সমতুল্য অ্যারের নেই। এটির তালিকার পাশাপাশি Tuple হল উপাদানগুলির একটি সংগ্রহ তবে সেগুলি বিভিন্ন ধরণের হতে পারে৷
পাইথনের অ্যারে মডিউল সি টাইপ অ্যারেকে অনুকরণ করে। মডিউল 'অ্যারে' ক্লাস সংজ্ঞায়িত করে। নিম্নলিখিত কনস্ট্রাক্টর একটি অ্যারে অবজেক্ট তৈরি করে:
array(typecode, initializer)
টাইপকোড আর্গুমেন্ট অ্যারের প্রকার নির্ধারণ করে। ইনিশিয়ালাইজারটি মিলে যাওয়া ধরণের সমস্ত উপাদানের সাথে একটি ক্রম হওয়া উচিত।
নিম্নলিখিত বিবৃতি একটি পূর্ণসংখ্যা অ্যারে অবজেক্ট তৈরি করে:
>>> import array >>> arr = array.array('i', range(5)) >>> arr array('i', [0, 1, 2, 3, 4]) >>> type(arr) <class 'array.array'> >>> array.typecodes 'bBuhHiIlLqQfd'
অ্যারে মডিউল টাইপকোড অ্যাট্রিবিউটকে সংজ্ঞায়িত করে যা একটি স্ট্রিং প্রদান করে। স্ট্রিং-এর প্রতিটি অক্ষর সি টাইপ এবং সমতুল্য পাইথন টাইপ নির্দেশ করে একটি টাইপ কোড উপস্থাপন করে:
কোড টাইপ করুন | C প্রকার | পাইথন প্রকার |
---|---|---|
'b' | স্বাক্ষরিত অক্ষর | int |
'B' | স্বাক্ষরবিহীন অক্ষর | ৷int |
'u' | Py_UNICODE | ইউনিকোড অক্ষর |
'h' | ৷স্বাক্ষরিত সংক্ষিপ্ত | ৷int |
'H' | অস্বাক্ষরহীন সংক্ষিপ্ত | ৷int |
'i' | স্বাক্ষরিত int | ৷int |
'I' | আনসাইন করা int | int |
'l' | দীর্ঘ স্বাক্ষরিত | ৷int |
'L' | আনসাইন করা লম্বা | int |
'q' | লম্বা লম্বা স্বাক্ষরিত | int |
'Q' | আনসাইন করা লম্বা লম্বা | int |
'f' | ফ্লোট | ফ্লোট |
'd' | ডবল | ফ্লোট |
ইনিশিয়ালাইজার আর্গুমেন্ট বস্তুর মত বাইট হতে পারে। নিম্নলিখিত উদাহরণ স্ট্রিং এর বাইট উপস্থাপনা থেকে একটি অ্যারে তৈরি করে।
>>> arr1 = array.array('b', b'Hello') >>> arr1 array('b', [72, 101, 108, 108, 111])
অ্যারে ক্লাস নিম্নলিখিত পদ্ধতিগুলিকে সংজ্ঞায়িত করে:
array.buffer_info()
এই পদ্ধতিটি একটি টিপল (ঠিকানা, দৈর্ঘ্য) প্রদান করে যা বর্তমান মেমরির ঠিকানা এবং অ্যারের বিষয়বস্তু ধরে রাখতে ব্যবহৃত বাফারের উপাদানগুলির দৈর্ঘ্য প্রদান করে।
>>> arr = array.array('i', [0, 1, 2, 3, 4]) >>> arr.buffer_info() (2201141755144, 5)
গণনা()
এই পদ্ধতিটি অ্যারেতে নির্দিষ্ট উপাদানের সংঘটনের সংখ্যা প্রদান করে।
>>> arr = array.array('i', [0, 1, 2, 3, 4]) >>> arr.count(2) 1
প্রসারিত()
এই পদ্ধতিতে পুনরাবৃত্তিযোগ্য থেকে অ্যারের শেষ পর্যন্ত বা পুনরাবৃত্তিযোগ্য আইটেমগুলিকে যুক্ত করা হয় যাতে অবশ্যই একই ধরনের কোড থাকতে হবে; যদি না হয়, TypeError উত্থাপিত হবে।
>>> arr = array.array('i', [0, 1, 2, 3, 4]) >>> arr1 = array.array('i',[10,20,30]) >>> arr.extend(arr1) >>> arr array('i', [0, 1, 2, 3, 4, 10, 20, 30])
ফাইল()
থেকেএই পদ্ধতিটি ফাইল অবজেক্ট থেকে n আইটেমগুলি (মেশিনের মান হিসাবে) পড়ে এবং একটি অ্যারের সাথে যুক্ত হয়৷
নিম্নলিখিত উদাহরণে, আমরা প্রথমে বাইনারি রাইট মোডে একটি ফাইল খুলি।
>>> file = open('test.txt','wb') >>> file.write(b'Hello Python') 12 >>> file.close()
আমরা এখন এই ফাইলটিকে অ্যারে অবজেক্টে ডেটা যুক্ত করতে ব্যবহার করি৷
>>> a = array.array('i') >>> file = open('test.txt','rb') >>> a.fromfile(file,file.tell()) >>> a array('i', [1819043144, 2035294319, 1852794996])
সংযোজন()
এই পদ্ধতিটি অ্যারের শেষে একটি নতুন আইটেম যুক্ত করে
fromlist()
এই পদ্ধতিটি তালিকা থেকে অ্যারেতে আইটেম যুক্ত করে। এটি তালিকায় x এর সমতুল্য:a.append(x)
>>> a = array.array('i') >>> a.append(10) >>> a array('i', [10]) >>> num = [20,30,40,50] >>> a.fromlist(num) >>> a array('i', [10, 20, 30, 40, 50])
ঢোকান()
নির্দিষ্ট অবস্থানের আগে অ্যারেতে একটি নতুন আইটেম সন্নিবেশ করুন
>>> a = array.array('i', [10, 20, 30, 40, 50]) >>> a.insert(2,25) >>> a array('i', [10, 20, 25, 30, 40, 50])
পপ()
এই পদ্ধতিটি অ্যারে থেকে মুছে ফেলার পর প্রদত্ত সূচীতে আইটেম ফেরত দেয়।
>>> a = array.array('i', [10, 20, 30, 40, 50]) >>> x = a.pop(2) >>> x 30 >>> a array('i', [10, 20, 40, 50])
সরান()
এই পদ্ধতিটি অ্যারে থেকে প্রদত্ত আইটেমের প্রথম উপস্থিতি সরিয়ে দেয়।
>>> a = array.array('i', [10, 20, 30, 40, 50]) >>> a.remove(30) >>> a array('i', [10, 20, 40, 50])
tofile()
এই পদ্ধতিতে লেখার অনুমতি সক্রিয় থাকা অবস্থায় ফাইল অবজেক্টে সমস্ত আইটেম লিখুন।
>>> a = array.array('i', [10, 20, 30, 40, 50]) >>> file = open("test.txt","wb") >>> a.tofile(file) >>> file.close() >>> file = open("test.txt","rb") >>> file.read() b'\n\x00\x00\x00\x14\x00\x00\x00\x1e\x00\x00\x00(\x00\x00\x002\x00\x00\x00'