如何在Python中从头开始实现数组数据结构?

问题描述 投票:0回答:1

我在 python 中使用了数组(作为 list 和 array.array),但我想知道如何在 Python 中实现像数组这样的数据结构。以下是我在查看其他语言的实现后的实现。请让我知道改进之处。

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
arrays python-3.x list implementation
1个回答
0
投票

此代码可能有帮助:

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
        
© www.soinside.com 2019 - 2024. All rights reserved.