python算法与数据结构(3)数组和列表

线性结构:内存连续,可以下标访问
1 python array(数组)存放同一类型,数字或者字符,numpy array.
2 list 列表
append 分配策略是0 2 4 8内存空间 O(1)
insert 从中间插入需要重新开辟空间 O(n)
pop 从最后弹出 O(1) 从中间删除则O(n)
remove 把一个拿掉,每个往前移 O(1) O(n)

频繁pop list不是好的数据结构

3 定义一个array

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

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

    def __setitem__(self, index, value):
        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():
    size =10
    a = Array(size)
    a[0] = 1
    assert a[0] == 1

    a.clear()
    assert a[0] is None

然后使用pytest 做单测

发布了48 篇原创文章 · 获赞 0 · 访问量 758

猜你喜欢

转载自blog.csdn.net/qq_36710311/article/details/104607948