ডাইনামিক অ্যারে
পাইথনে, একটি তালিকা, সেট এবং অভিধান পরিবর্তনযোগ্য বস্তু। যদিও সংখ্যা, স্ট্রিং এবং টিপল হল অপরিবর্তনীয় বস্তু। মিউটেবল অবজেক্টের অর্থ হল আমরা তালিকা, সেট বা অভিধান থেকে আইটেমগুলি যোগ/মুছে ফেলি তবে, টিপল বা স্ট্রিংয়ের মতো অপরিবর্তনীয় বস্তুর ক্ষেত্রে এটি সত্য নয়।
পাইথনে, একটি তালিকা একটি গতিশীল অ্যারে। চলুন একটি গতিশীল তালিকা তৈরি করার চেষ্টা করি -
>>> #Create an empty list, named list1 >>> list1 = [] >>> type (list1) <class 'list'>
আমাদের খালি তালিকায় কিছু আইটেম যোগ করুন, তালিকা1 −
>>> # Add items >>> list1 =[2, 4, 6] >>> list1 [2, 4, 6] >>> # Another way to add items, using append. >>> list1.append('Tutorialspoint') >>> list1 [2, 4, 6, 'Tutorialspoint']
একটি তালিকা থেকে কিছু আইটেম সরান -
>>> # deleting item from a list >>> list1.pop() 'Tutorialspoint' >>> list1 [2, 4, 6]
উপরে থেকে আমরা দেখতে পাচ্ছি যে তালিকাটি আসলে একটি অ্যারের একটি এক্সটেনশন, যেখানে আমরা একটি তালিকার আকার পরিবর্তন (বাড়ানো বা হ্রাস) করতে পারি। আমরা "শূন্য" আকারের একটি তালিকা দিয়ে শুরু করি এবং তারপরে এটিতে "চার" আইটেম যোগ করি।
ডাইনামিক অ্যারে বাস্তবায়নের বুনিয়াদি
একটি উদাহরণ বিবেচনা করুন যেখানে তালিকা .i.e. যখন অ্যারের আকার পূর্ণ হয় তখন list1 যুক্ত করা হয়, এর আকারের সীমাবদ্ধতার ঘাটতি কাটিয়ে উঠতে আমাদের নীচের পদক্ষেপগুলি সম্পাদন করতে হবে। এটি ডাইনামিক অ্যারে বাস্তবায়নের পিছনে ভিত্তি -
- বড় ক্ষমতা সহ একটি নতুন অ্যারে তালিকা2 বরাদ্দ করুন
- i =0,1….n-1 এর জন্য list2[i] =list1[i] সেট করুন, যেখানে n হল আইটেমের বর্তমান সংখ্যা।
- লিস্ট1=লিস্ট2 সেট করুন, যেমন এখন তালিকা2 আমাদের নতুন তালিকার উল্লেখ করছে।
- এবং তারপর, আমাদের তালিকায় (তালিকা 1) নতুন আইটেম সন্নিবেশ (সংযোজন) করুন।
পাইথন প্রোগ্রামিং-এ কিভাবে ডায়নামিক অ্যারে ধারণা বাস্তবায়ন করা যায় তার একটি সহজ কোড তৈরি করা যাক। আমরা পাইথনে বিল্ট-ইন লাইব্রেরি ক্লাস ব্যবহার করে আমাদের নিজস্ব ডায়নামিক অ্যারে ক্লাস তৈরি করব যাকে ctypes বলা হয় যা ctypes মডিউল থেকে একটি কাঁচা অ্যারে হিসাবে ব্যবহার করা হবে।
dynamicArray.py
import ctypes class DynamicArray(object): #Initialize it def __init__(self): #We'll have three attributes self.n = 0 # by default self.capacity = 1 # by default self.A = self.make_array(self.capacity) # make_array will be defined later #Length method def __len__(self): #It will return number of elements in the array return self.n def __getitem__(self, k): #it will return the elements at the index k if not 0 <=k <self.n: return IndexError('k is out of bounds') return self.A[k] def append(self, element): #checking the capacity if self.n == self.capacity: #double the capacity for the new array i.e self.resize(2*self.capacity) # _resize is the method that is defined later # set the n indexes of array A to elements self.A[self.n] = element self.n += 1 def _resize(self, new_cap): #new_cap is for new capacity #declare array B B = self.make_array(new_cap) for k in range(self.n): B[k] = self.A[k] # referencing the elements from array A to B #ones refered then self.A = B # A is now the array B self.capacity = new_cap # resets the capacity #making the make-array method using ctypes def make_array(self,new_cap): return (new_cap * ctypes.py_object)() arr = DynamicArray()
যেহেতু আমাদের ডায়নামিক ক্লাস ব্যবহার করার জন্য প্রস্তুত, আসুন এটি দিয়ে কিছু চেষ্টা করি -
>>> len(arr) 0 >>> arr.append(1) >>> #First item entered >>> len(arr) 1 >>> arr.append('Tutorialspoint') >>> #second item entered >>> len(arr) 2 >>> arr[1] 'Tutorialspoint'
এটাই, আমরা আমাদের নিজস্ব ডায়নামিক অ্যারে তৈরি করেছি এবং আমরা অ্যারের আকার পরিবর্তন করতে পারি যা পাইথনের একটি তালিকা৷