python数组和列表

"""
线性结构:
    特点:内存连续,下标访问

----------------------------------------------------------------------------
## array(python内置了array):
    缺陷:只能存同一类型,只能存比较基本的数值,字符类型
    一般用的不多,常用numpy
----------------------------------------------------------------------------
## list
    init:新建了一个 PyListObject 对象;O(1)
    append:
        最开始先分派4个 PyObject 内存,
        使用 append 的时候,如果已经有足够多的内存空间,则时间复杂度O(1);
        内存不够,需要重新开辟空间(每次开辟4个),则时间复杂度O(n)
    insert:
        往中间插入,涉及重新开辟空间,O(n)
    pop:
        默认删除最后一个元素,O(1)
        在中间删除元素,O(n)
    remove:
        除元素后,后续每个元素需要往前移动一位,O(n)
    注释:
        注意内存容量和 length 长度的区别
        如果频繁的 remove,insert 操作的话,list的效率其实并不太高
"""


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

    def __getitem__(self, item):
        return self._items[item]

    def __setitem__(self, item, value=None):
        self._items[item] = 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 i in self._items:
            yield i


def test_array():
    a = MyArray(10)
    a[0] = 99
    a[1] = 33
    assert a[0] == 99
    assert a[1] == 33
posted @ 2020-05-05 02:34  SBJBA  阅读(419)  评论(0)    收藏  举报