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中的__new__()方法的使用
Apr 09 Python
通过python+selenium3实现浏览器刷简书文章阅读量
Dec 26 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
Python实现的删除重复文件或图片功能示例【去重】
Apr 23 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
django创建简单的页面响应实例教程
Sep 06 Python
python有序查找算法 二分法实例解析
Feb 18 Python
Python绘制动态水球图过程详解
Jun 03 Python
序列化Python对象的方法
Aug 01 Python
Python爬虫之Selenium实现关闭浏览器
Dec 04 Python
使用Python脚本对GiteePages进行一键部署的使用说明
May 27 Python
python库Tsmoothie模块数据平滑化异常点抓取
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全概率运算函数(优化版) Webgame开发必备
2011/07/04 PHP
openPNE常用方法分享
2011/11/29 PHP
php include和require的区别深入解析
2013/06/17 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
JS 自动完成 AutoComplete(Ajax 查询)
2009/07/07 Javascript
javascript 数组学习资料收集
2010/04/11 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
JavaScript的React框架中的JSX语法学习入门教程
2016/03/05 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
解决微信小程序调用moveToLocation失效问题【超简单】
2019/04/12 Javascript
vue cli使用融云实现聊天功能的实例代码
2019/04/19 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
JavaScript实现简单进度条效果
2020/03/25 Javascript
Python读写ini文件的方法
2015/05/28 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
python画折线图的程序
2018/07/26 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
Python count函数使用方法实例解析
2020/03/23 Python
用python制作个视频下载器
2021/02/01 Python
印度服装购物网站:Limeroad
2018/09/26 全球购物
大学生毕业的自我评价分享
2014/01/02 职场文书
优秀教师先进事迹
2014/01/22 职场文书
计算机学生求职信范文
2014/01/30 职场文书
百日安全活动总结
2014/05/04 职场文书
Nginx域名转发使用场景代码实例
2021/03/31 Servers
mysql left join快速转inner join的过程
2021/06/30 MySQL
日本十大血腥动漫,那些被禁播的动漫盘点
2022/03/21 日漫
MySQL 计算连续登录天数
2022/05/11 MySQL
Windows7下FTP搭建图文教程
2022/08/05 Servers