Python List实现动态数组以存储数据
更新时间:2023-09-12Python数组简介
Python中的数组是一种可变容器,可存储任意数量的结构化数据。数组可以存储具有相同数据类型的元素。Python中的数组是列表(List)。
Python列表实现动态数组
Python中的列表(List)可以动态调整大小以存储任意数量的元素。通过向列表中添加元素以及删除列表中的元素,可以动态地调整其大小。当我们想要存储大量数据时,就可以使用Python列表作为动态数组。
添加元素
通过使用append()方法,可以将元素添加到列表的末尾。
a=[] a.append(1) a.append(2) a.append(3) print(a) # [1, 2, 3]
删除元素
通过使用del操作符或pop()方法,可以从列表中删除元素。
a=[1, 2, 3] del a[0] print(a) # [2, 3] a.pop() print(a) #[2]
插入元素
通过使用insert()方法,可以在指定位置插入新元素。
a=[1, 2, 3] a.insert(1, 'inserted') print(a) # [1, 'inserted', 2, 3]
Python动态数组实战应用
在Python中实现动态数组时,常用的包括numpy和array。这里我们介绍未使用这两个包实现动态数组的方法。
实现一个具有动态增加和减少元素的数组
class DynamicArray(object): def __init__(self): self._data=[] self._n=0 def __len__(self): """ 返回数组包含的元素个数 """ return self._n def __getitem__(self, k): """ 返回第k个元素 """ if not 0 <=k < self._n: raise IndexError('invalid index') return self._data[k] def __setitem__(self, k, value): """ 将第k个元素设置为value """ if not 0 <=k < self._n: raise IndexError('invalid index') self._data[k]=value def append(self, value): """ 在数组末尾添加一个元素 """ self._data.append(value) self._n +=1 def insert(self, k, value): """ 在位置k插入一个元素 """ if not 0 <=k <=self._n: raise IndexError('invalid index') self._data.insert(k, value) self._n +=1 def remove(self, value): """ 删除第一个值为value的元素 """ for i in range(self._n): if self._data[i]==value: del self._data[i] self._n -=1 return raise ValueError('value not found') def __repr__(self): """ 返回表示数组的字符串 """ return '[' + ', '.join(str(self._data[i]) for i in range(self._n)) + ']'
实例化
使用上述DynamicArray类,可以实例化一个具有动态增加和减少元素的数组对象。
a=DynamicArray() a.append(1) a.append(2) a.append(3) print(a) # [1, 2, 3] a.remove(2) print(a) # [1, 3]
总结
Python中的列表是动态数组的一种实现,在应对需要动态增加和减少元素的情况下非常方便。如果需要进一步提高数据处理效率,可以使用numpy和array等Python包。