Python dynamically resize list

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.