Python中顺序表的实现简单代码分享


Posted in Python onJanuary 09, 2018

顺序表python版的实现(部分功能未实现)

结果展示:

Python中顺序表的实现简单代码分享

代码示例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

class SeqList(object):
 def __init__(self, max=8):
  self.max = max  #创建默认为8
  self.num = 0
  self.date = [None] * self.max
  #list()会默认创建八个元素大小的列表,num=0,并有链接关系
  #用list实现list有些荒谬,全当练习
  #self.last = len(self.date)
  #当列表满时,扩建的方式省略
 def is_empty(self):
  return self.num is 0

 def is_full(self):
  return self.num is self.max

 #获取某个位置的元素
 def __getitem__(self, key):
  if not isinstance(key, int):
   raise TypeError
  if 0<= key < self.num:
   return self.date[key]
  else:
   #表为空或者索引超出范围都会引发索引错误
   raise IndexError

 #设置某个位置的元素
 def __setitem__(self, key, value):
  if not isinstance(key, int):
   raise TypeError
  #只能访问列表里已有的元素,self.num=0时,一个都不能访问,self.num=1时,只能访问0
  if 0<= key < self.num:
   self.date[key] = value #该位置无元素会发生错误
  else:
   raise IndexError

 def clear(self):
  self.__init__()

 def count(self):
  return self.num

 def __len__(self):
  return self.num

 #加入元素的方法 append()和insert()
 def append(self,value):
  if self.is_full():
   #等下扩建列表
   print("list is full")
   return
  else:
   self.date[self.num] = value
   self.num += 1

 def insert(self,key,value):
  if not isinstance(key, int):
   raise TypeError
  if key<0: #暂时不考虑负数索引
   raise IndexError
  #当key大于元素个数时,默认尾部插入
  if key>=self.num:
   self.append(value)
  else:
   #移动key后的元素
   for i in range(self.num, key, -1):
    self.date[i] = self.date[i-1]
   #赋值
   self.date[key] = value
   self.num += 1

 #删除元素的操作
 def pop(self,key=-1):
  if not isinstance(key, int):
   raise TypeError
  if self.num-1 < 0:
   raise IndexError("pop from empty list")
  elif key == -1:
   #原来的数还在,但列表不识别他
   self.num -= 1
  else:
   for i in range(key,self.num-1):
    self.date[i] = self.date[i+1]
   self.num -= 1

 def index(self,value,start=0):
  for i in range(start, self.num):
   if self.date[i] == value:
    return i
  #没找到
  raise ValueError("%d is not in the list" % value)

 #列表反转
 def reverse(self):
  i,j = 0, self.num - 1
  while i<j:
   self.date[i], self.date[j] = self.date[j], self.date[i]
   i,j = i+1, j-1

if __name__=="__main__":
 a = SeqList()
 print(a.date)
 #num == 0
 print(a.is_empty())
 a.append(0)
 a.append(1)
 a.append(2)
 print(a.date)
 print(a.num)
 print(a.max)
 a.insert(1,6)
 print(a.date)
 a[1] = 5
 print(a.date)
 print(a.count())

 print("返回值为2(第一次出现)的索引:", a.index(2, 1))
 print("====")
 t = 1
 if t:
  a.pop(1)
  print(a.date)
  print(a.num)
 else:
  a.pop()
  print(a.date)
  print(a.num)
 print("========")
 print(len(a))

 a.reverse()
 print(a.date)
 """
 print(a.is_full())
 a.clear()
 print(a.date)
 print(a.count())
 """

有关于Python数据结构中顺序表的实现,大家也可以参考本站的另一篇文章Python数据结构之顺序表的实现代码示例,当中有对顺序表略微详细的介绍。小编对此知识点理解不够透彻,以后还会继续研究的。

以上就是本文关于Python中顺序表的实现简单代码分享的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
Python 爬虫学习笔记之单线程爬虫
Sep 21 Python
Python在图片中添加文字的两种方法
Apr 29 Python
Jupyter中直接显示Matplotlib的图形方法
May 24 Python
对python自动生成接口测试的示例讲解
Nov 30 Python
Python基础之条件控制操作示例【if语句】
Mar 23 Python
Pandas之Fillna填充缺失数据的方法
Jun 25 Python
Python IDE Pycharm中的快捷键列表用法
Aug 08 Python
python笔记_将循环内容在一行输出的方法
Aug 08 Python
Python语言异常处理测试过程解析
Jan 08 Python
Tensorflow分批量读取数据教程
Feb 07 Python
Python-jenkins模块之folder相关操作介绍
May 12 Python
基于python实现判断字符串是否数字算法
Jul 10 Python
python中set()函数简介及实例解析
Jan 09 #Python
Python中摘要算法MD5,SHA1简介及应用实例代码
Jan 09 #Python
深入了解Python中pop和remove的使用方法
Jan 09 #Python
Python使用smtp和pop简单收发邮件完整实例
Jan 09 #Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
Jan 09 #Python
详解python使用Nginx和uWSGI来运行Python应用
Jan 09 #Python
Python numpy实现数组合并实例(vstack,hstack)
Jan 09 #Python
You might like
利用PHP动态生成VRML网页
2006/10/09 PHP
php缓冲 output_buffering的使用详解
2013/06/13 PHP
php实现下载限制速度示例分享
2014/02/13 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
jquery CSS选择器笔记
2010/03/29 Javascript
javascript题目,重写函数让其无限相加
2012/02/15 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
Python绘制二维曲线的日常应用详解
2019/12/04 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
Html5基于canvas实现电子签名并生成PDF文档
2020/12/07 HTML / CSS
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
super()与this()的区别
2016/01/17 面试题
Java工程师面试集锦之Spring框架
2013/06/16 面试题
运动会广播稿300字
2014/01/10 职场文书
诚信承诺书模板
2014/05/26 职场文书
2014年技术员工作总结
2014/11/18 职场文书
铁路安全反思材料
2014/12/24 职场文书
公司车辆管理制度
2015/08/04 职场文书
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server
Go语言实现一个简单的并发聊天室的项目实战
2022/03/18 Golang
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫