Narasimha Gundavarapu
Narasimha Gundavarapu

Reputation: 43

How to implement an array data structure from scratch in python?

I've used arrays in python (both as list and array.array) but I was wondering how can I implement a data structure like an array in Python. The following is my implementation after looking at implementations done in other languages. Please let me know of improvements.

class my_array:
    def __init__(self, length):
        self.length = length
        self.data = {}

    def get(self, index):
        return self.data[index]
    
    def push(self, item):
        self.data[self.length] = item
        self.length += 1
        return self.data
    
    def pop(self):
        last_item = self.data[self.length - 1]
        del self.data[self.length-1]
        self.length -= 1
        return last_item
    
    def insert(self, index, item):
        self.data[index] = item

Upvotes: 3

Views: 1403

Answers (1)

Luke L
Luke L

Reputation: 313

This code might help:

class LengthExceeded(Exception):
    pass
class Array():
    def __init__(self, ele_type=int, length=100):
        self.type = ele_type
        self.len = length
        self.data = []
    def _validate(self, object):
        if type(object) != self.type:
            raise TypeError
        if len(self.data) == self.len:
            raise LengthExceeded
    def append(self, value):
        self._validate(value)
        self.data.append(value)
    def insert(self, index, value):
        self._validate(value)
        self.data.insert(index, value)
    def pop(self):
        if len(self.data) == 0:
            raise IndexError
        self.data.pop()
    def remove(self, index):
        if 0<= index < len(self.data):
            self.data.pop(index)
        raise IndexError
    def __iter__(self):
        return iter(self.data)
    def __len__(self):
        return len(self.data)
    def __repr__(self):
        return f'Array({self.type}, {self.len})'
    def __getitem__(self, item):
        return self.data[item]
    def __setitem__(self, key, value):
        self.data[key] = value
        

Upvotes: 0

Related Questions