diff --git a/python/05_array/myarray.py b/python/05_array/myarray.py index e4df25bb..8eea274d 100644 --- a/python/05_array/myarray.py +++ b/python/05_array/myarray.py @@ -9,35 +9,53 @@ class MyArray: """A simple wrapper around List. You cannot have -1 in the array. """ + def __init__(self, capacity: int): + self._data = [] self._count = 0 self._capacity = capacity def __getitem__(self, position: int) -> int: + """Support for subscript. Perhaps better than the find() method below. """ return self._data[position] def find(self, index: int) -> Optional[int]: + if index >= self._count or index <= -self._count: return None return self._data[index] def delete(self, index: int) -> bool: + if index >= self._count or index <= -self._count: return False + self._data[index:-1] = self._data[index+1:] self._count -= 1 + # 真正将数据删除并覆盖原来的数据 ,这个需要增加 + self._data = self._data[0:self._count] + print ('delet function',self._data) return True def insert(self, index: int, value: int) -> bool: - if index >= self._count or index <= -self._count: return False + + #if index >= self._count or index <= -self._count: return False if self._capacity == self._count: return False - self._data.insert(index, value) + # 如果还有空间,那么插入位置大于当前的元素个数,可以插入最后的位置 + if index >= self._count: + self._data.append(value) + # 同上,如果位置小于0 可以插入第0个位置. + if index < 0: + print (index) + self._data.insert(0, value) + self._count += 1 return True def insert_to_tail(self, value: int) -> bool: + if self._count == self._capacity: return False if self._count == len(self._data): self._data.append(value) @@ -47,11 +65,13 @@ def insert_to_tail(self, value: int) -> bool: return True def __repr__(self) -> str: + return " ".join(str(num) for num in self._data[:self._count]) def print_all(self): + for num in self._data[:self._count]: - print(f"{num}", end=" ") + print("{num}", end=" ") print("\n", flush=True) if __name__ == "__main__": @@ -59,7 +79,10 @@ def print_all(self): for i in range(6): a.insert_to_tail(i) - a.delete(2) - print(a) - a.insert_to_tail(7) - print(a) \ No newline at end of file + print('origin',a) + a.delete(4) + print ('delete ',a) + + a.insert(100,10000) + print (a) +