01_數(shù)組Array和列表list

list的時間復(fù)雜度

操作 平均時間復(fù)雜度
list[index]-----------O(1)
list.append-----------O(1)
list.insert-----------O(n)
list.pop(index), default last element-----------O(1)
list.remove-----------O(n)

基于列表list實(shí)現(xiàn)Array
class Array(object):

    def __init__(self, size=32):
        self._size = size
        self._items = [None] * size

    def __getitem__(self, index):
        if index > self._size:  --考慮數(shù)組越界,邊界檢查
            return 'out of range'
        return self._items[index]

    def __setitem__(self, index, value):
        if index > self._size:
            return 'out of range'
        self._items[index] = value

    def __len__(self):
        return self._size

    def clear(self, value=None):
        for i in range(len(self._items)):
            self._items[i] = value

    def __iter__(self):
        for item in self._items:
            yield item

def test_array():
    a = Array(10)
    a[0] = 1
    assert a[0] == 1      --assert 若False返回AssertionError
    assert len(a) == 10
    print(a[11])
    print(len(a))
    assert a[32] == 1

if __name__ == '__main__':
    test_array()

輸出:
out of range
Traceback (most recent call last):
10
  File "C:/Users/lyq/PycharmProjects/test_data_struct/test1/test_array.py", line 39, in <module>
    test_array()
  File "C:/Users/lyq/PycharmProjects/test_data_struct/test1/test_array.py", line 36, in test_array
    assert a[32] == 1
AssertionError
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容