《Python数据结构》@EnzoReventon

Python 数据结构 —— 线性结构 Array

1. 关于Array的一些简介

数组是最常用的一种线性结构。除了数组之外,其实Python还内置了一个array的模块,许多人没有用过。
Python的array模块和数组一样也是内存连续的,存储的结构也是属于同一种类型,而且只能存储数值和字符。

Python关于array的技术文档:点击此处

在创建Array之前,我们还需要说一下最常用的list,list有许多操作,如下表所示:

操作 解释 平均时间复杂度
list.index(x[, start[, end]]) x-- 查找的对象。start-- 可选,查找的起始位置。end-- 可选,查找的结束位置。 O(1)
list.append(obj) 在列表末尾添加新的对象 O(1)
list.insert(index, obj) 将对象插入列表 O(n)
list.pop(index) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 O(1)
list.remove(obj) 移除列表中某个值的第一个匹配项 O(n)
list.reverse() 反向列表中元素 O(n)
list.count(obj) 统计某个元素在列表中出现的次数 O(n)

2. 下面就是代码实现

2.1 类定义与方法的编写

class Array():                               #定义一个Array的类,类中包含初始化、获取value、设置value等方法def __init__(self,size):              #初始化self.__size = size                     #记录容器空间self.__item = [None] * size         #分配空间self.__length = 0def __getitem__(self, index):            #获取数据,index为你要获取数据的索引号return self.__item[index]def __setitem__(self, index, value):  #增加数据,index为索引,表示你要放在什么地方,value为你要存储的数据self.__item[index] = value             #增加数据self.__length += 1                   #包含数据的长度+1def __len__(self):                       #Array所包含数据的数量return self.__sizedef clear(self, value=None):           #清空该Array中的所有内容for i in range(self.__size):self.__item[i] = valuedef __iter__(self):                       #遍历Array中的数据for v in self.__item:print(v)

2.2 测试一些方法

2.2.1 初始化/实例化Array,向Array中插入数据,并查询指定index的Array内容

也可以直接使用定义的方法__getitem__或者__setitem__,在此因为使用下面的方法比较简单,所以展示下面比较常用的方法。

if __name__ == '__main__':a = Array(10)   #实例化Array为a,其中定义size为10a[2] = 20      #向Array a中index为2的空间中插入数据10print(a[2])      #打印index为2的a内容

结果:输出为20

2.2.2 获取Array的长度

if __name__ == '__main__':a = Array(10)a[2] = 20print(a.__len__())     #打印Array的长度

结果:输出为10,因为我们在实例化Array a的时候定义了size为10.

2.2.3 遍历Array


if __name__ == '__main__':a = Array(10)a[2] = 20a[4] = 40a[6] = 60a.__iter__()

结果:刚刚赋值的index内容打印出来了,未赋值的为None

2.2.4 清空Array

if __name__ == '__main__':a = Array(3)  #实例化一个size为3的Array aa[0] = 20a[1] = 40a[2] = 60a.clear()  #清空Arraya.__iter__() #遍历Array并print

结果:输出为None

【Python-数据结构】——线性结构相关推荐

  1. 数据结构——线性结构总结

    数据结构--线性结构总结 数据结构--线性结构总结 写在前面 线性结构的特点 线性表 栈 队列 相关的STL容器的基本操作 vector list stack queue deque 习题 线性表相关 ...

  2. 数据结构——线性结构

    简单地说,线性结构就是表中各个结点具有线性关系.如果从数据结构的语言来描述,线性结构应该包括如下几点: 1.线性结构是非空集. 2.线性结构有且仅有一个开始结点和一个终端结点. 3.线性结构所有结点都 ...

  3. java中线性结构的例子_java数据结构--线性结构

    一.数据结构 数据结构由数据和结构两部分组成,就是将数据按照一定的结构组合起来,这样不同的组合方式有不同的效率,可根据需求选择不同的结构应用在相应在场景.数据结构大致 分为两类:线性结构(如数组,链表 ...

  4. 常用数据结构--线性结构

    数据结构是计算机存储.组织数据的方式.常见的数据结构分类方式如下图: 常用的线性结构有:线性表,栈,队列,循环队列,数组.线性表中包括顺序表.链表等,其中,栈和队列只是属于逻辑上的概念,实际中不存在, ...

  5. 数据结构:线性结构和非线性结构的理解

    我们知道数据结构是计算机存储.组织数据的方式.常见的数据结构分类方式如下图: 我们这里主要说一下线性结构和非线性结构 1. 线性结构 线性结构是什么? 数据结构中线性结构指的是数据元素之间存在着&qu ...

  6. 数据结构——线性结构(线性表)

    文章目录 一. 线性结构概述 1. 线性结构(线性表的逻辑结构)的定义 2. 线性表的特点 二. 线性结构分类 1. 连续存储[顺序表] (1). 什么叫数组 (2). 顺序表算法的基本操作 (3). ...

  7. 数据结构线性结构和非线性结构

    1.线性结构 特点:1)数据元素之间存在一对一的线性关系 2)线性存储结构分为顺序存储结构和链式结构. 3)顺序表中存储元素(地址)是连续的 4)链表中存储的元素不一定是连续的 5)线性结构常见的有: ...

  8. 数据结构Python版--线性结构

    文章目录 线性数据结构 栈 匹配括号 进制转换问题 前序.中序和后序表达式 队列 传土豆 打印任务 双端队列 回文检测器 列表 无序列表 有序列表 线性数据结构 栈,队列,双端队列和列表都是有序的数据 ...

  9. 数据结构与算法(python) 线性结构:无序列表 Unordered List以及链表

    参考自 MOOC数据结构与算法Python版 目录 一.什么是列表List 二.抽象数据类型List 2.1 List的基本操作 三. Python实现链表:节点Node 3.1 从尾到头打印链表 一 ...

  10. 数据结构与算法(python) 线性结构:有序列表Ordered List

    参考自 MOOC数据结构与算法Python版 目录 一.什么是有序表OrderedList 二.抽象数据类型:有序表OrderedList 2.1 OrderedList的基本操作 2.2 Pytho ...

最新文章

  1. 详解C#委托,事件与回调函数
  2. 购物车的实现(jsp的session+Java的Map的结合)
  3. lr不能直接转ps编辑_摄影后期调色软件,Lr软件包
  4. vuejs中 vmode_在VueJS中发现封闭的力量
  5. python装饰器简单理解_python装饰器的简单理解
  6. JavaScript基础之'script'Tag的使用
  7. 多层full-connect 神经网络测试
  8. kaggle初探--泰坦尼克号生存预测
  9. Python.习题八 文件与与异常(上)
  10. Opencv 实战五 图像拼接
  11. excel中计算单元格值等于1的数量
  12. 文件备份 服务器,服务器文件备份
  13. MIT6.828学习之homework9:Barriers
  14. 软件设计:“度”、“裁剪”与“变通”
  15. arthas热更新线上代码
  16. 使用HTML写一个个人简历
  17. 从业了八年程序员觉得已经是非常的枯燥了
  18. 《C语言程序设计》(谭浩强第五版) 第8章 善于利用指针 习题解析与答案
  19. linux 怎样查看设备信息,Linux查看设备信息命令
  20. h5 数字变化_基于JS实现数字动态变化显示效果附源码

热门文章

  1. 黑苹果 wifi android,黑苹果目前已可以完美驱动内置intel WiFi
  2. 这是二哈和柯基生下的宝宝?哈撒给,简直太可爱了...
  3. 如何让Chrome在隐身(无痕)模式下使用扩展程序
  4. Linux 数据可视化工具
  5. this关键字、this关键字应用
  6. 解决memoryerror
  7. centos7防火墙开放端口,附开放samba特定端口实例
  8. ubuntu进行MNN编译
  9. JZOJ 5207【GDOI2018模拟7.7】暴力大神hxx
  10. 带宽与码元的关系_数据速率、载波频率和带宽的关系