How to implement dynamic array in Python
A dynamic array automatically grows when you try to make an insertion into a fully occupied list. Once all the space is consumed, and an additional element is ready to be added, the underlying fixed-sized array needs to increase in size.
Resizing is usually expensive because you have to allocate a bigger array and copy all of the elements over from the array we have overgrown before we can append our item.
Implementation
import ctypes
class DynamicArray:
def __init__[self]:
self.n=0 # count actual elements
self.size=1 # default array capacity
self.A=self._make_array[self.size] # low level arrays-->creating an array
def __len__[self]:
return self.n
def append[self,item]:
if self.n==self.size: # not enough memory or rooms
self._resize[2*self.size] # double the capacity
self.A[self.n]=item # I am inserting element into the array
self.n+=1
def _resize[self,new_capacity]:
# 1.Creata new Array
B=self._make_array[new_capacity]
self.size=new_capacity
# 2.Copy the elemnts from old array to new array
for i in range[self.n]:
B[i]=self.A[i]
#3 .Reassign[delete the previous array]
self.A=B
def _make_array[self,new_capacity]:
return [new_capacity*ctypes.py_object][]
def __str__[self]:
temp=""
for i in range[self.n]:
temp=temp+str[self.A[i]]+","
temp=temp[:-1]
return "["+temp+"]"
arr=DynamicArray[] # object creation
arr.append[100]
arr.append[200]
arr.append[500]
print[len[arr]]
print[arr]
Run
The highlighted code part gives information about the Dynamic Allocation of a new size, for inserting new elements.