c语言编程笔录

首页 >   > 笔记大全

笔记大全

Python List实现动态数组以存储数据

更新时间:2023-09-12

Python数组简介

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包。