给自己好好上一课 数据结构与算法课 数组实现

其实相比列表,python内置的数组使用的极少,要用array的话,同样推荐Numpy的array,那个用于处理数据,做简单数据分析的函数,就特别好用。但本篇还是自己手动建立一个类来实现数组操作(毕竟平时都是直接用的api,没手动过)

#数组和列表
#python内置的array用的特别少,列表用的特别多
class Array(object):
    def __init__(self, size = 32):
        self._size = size
        self._items = [None] * size

    def __getitem__(self, index):    #getitem也就是获取索引,方法里含一个参数
        return self._items[index]

    def __setitem__(self, index, value):    #setitem是建立元素索引和值,方法里有两个参数
        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] == None

同样,可挖掘的点和上一篇差不多,对于yield和类变量私有的介绍见

https://blog.csdn.net/honorwh/article/details/89462474

这里面的每个方法对应于列表分别是

list[],

list[] =  

len(list)

list.clear()

[i for i in list] 这是列表推导式,更直接

其实列表的方法远不止这些,当然数组的操作也一样,但列表还是用的相对较多的数据类型

扩展学习:

数据类型和数据结构的区别:

数据类型:是一种值的集合和定义在这个值集上的一组操作的总称。

  数据类型的分类为:原子类型和结构类型;

  原子类型 = 一种值的集合 + 定义在值集合上的一组操作。(比如:python中的int,float,字符串)

  结构类型 = 一种数据结构 + 定义在这种数据结构上的一组操作。(比如:python中的列表,字典,元组)

  原子类型 + 结构类型 = 数据类型

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合,包括逻辑结构和物理结构。(数据元素是最基本的数据单位,最基本的数据元素是一个二进制位。)

总结:数据结构是一种值的集合,这种值集+定义在值集上的一组操作就是结构类型,而结构类型是数据类型的一种,所以数据结构是一种数据类型。

附上图浅显易懂:

猜你喜欢

转载自blog.csdn.net/honorwh/article/details/89462914