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基于smtplib实现异步发送邮件服务
May 28 Python
Python实现k-means算法
Feb 23 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
Jun 01 Python
python排序函数sort()与sorted()的区别
Sep 18 Python
用Python读取几十万行文本数据
Dec 24 Python
详解python中sort排序使用
Mar 23 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 Python
django框架F&amp;Q 聚合与分组操作示例
Dec 12 Python
python flask框架快速入门
May 14 Python
Python pandas之求和运算和非空值个数统计
Aug 07 Python
PYTHON InceptionV3模型的复现详解
May 06 Python
移除Selenium中window.navigator.webdriver值
Jun 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.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
PHP对象、模式与实践之高级特性分析
2016/12/08 PHP
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
jQuery随便控制任意div隐藏的方法
2013/06/28 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
angularJS 中input示例分享
2015/02/09 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
2019/08/27 jQuery
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
《Python学习手册》学习总结
2018/01/17 Python
Python基于socket模块实现UDP通信功能示例
2018/04/10 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
python实现图片中文字分割效果
2019/07/22 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
Python操作Jira库常用方法解析
2020/04/10 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
python元组拆包实现方法
2021/02/28 Python
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
办公室副主任职责范本
2014/03/08 职场文书
技术总监管理岗位职责
2014/03/09 职场文书
成绩单公证书
2014/04/10 职场文书
秋天的图画教学反思
2014/05/01 职场文书
幼儿园大班毕业评语
2014/12/31 职场文书
目标责任书格式范文
2015/05/11 职场文书
Python超简单容易上手的画图工具库推荐
2021/05/10 Python