线性结构:内存连续,可以下标访问
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 做单测