Are lists dynamic in Python?

Implementation of Dynamic Array in Python

What is a dynamic array?

A dynamic array is similar to an array, but with the difference that its size can be dynamically modified at runtime. Dont need to specify how much large an array beforehand. The elements of an array occupy a contiguous block of memory, and once created, its size cannot be changed. A dynamic array can, once the array is filled, allocate a bigger chunk of memory, copy the contents from the original array to this new space, and continue to fill the available slots.

Attention reader! Dont stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.



Well be using a built in library called ctypes of python . Check out the documentation for more info, but its basically going to be used here as a raw array from the ctypes module.

A quick note on public vs private methods, we can use an underscore _ before the method name to keep it non-public. For example:




class M[object]:
def public[self]:
print 'Use Tab to see me !'
def _private[self]:
print "You won't be able to Tab to see me !"




m = M[]
m.public[]
Output: Use Tab to see me!




m._private[]
Output: You won't be able to see me!


Dynamic Array Logic Implementation:

The key is to provide means to grows an array A that stores the elements of a list. We cant actually grow the array, its capacity is fixed. If an element is appended to a list at a time, when the underlying array is full, we need to perform following steps.

  1. Allocate a new array B with larger capacity [A commonly used rule for the new array is to have twice the capacity of the existing array ]
  2. Set B[i]=A[i], for i=0 to n-1 where n denotes the current no of items.
  3. Set A=B that is, we hence forth use B as the array of supporting list.
  4. Insert new element in the new array.

Dynamic Array Code Implementation:




import ctypes
class DynamicArray[object]:
'''
DYNAMIC ARRAY CLASS [Similar to Python List]
'''
def __init__[self]:
self.n = 0 # Count actual elements [Default is 0]
self.capacity = 1 # Default Capacity
self.A = self.make_array[self.capacity]
def __len__[self]:
"""
Return number of elements sorted in array
"""
return self.n
def __getitem__[self, k]:
"""
Return element at index k
"""
if not 0

Chủ Đề