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实现Tab自动补全和历史命令管理的方法
Mar 12 Python
python根据给定文件返回文件名和扩展名的方法
Mar 27 Python
用Python登录Gmail并发送Gmail邮件的教程
Apr 17 Python
Python抓取百度查询结果的方法
Jul 08 Python
用Python进行简单图像识别(验证码)
Jan 19 Python
浅谈python之高阶函数和匿名函数
Mar 21 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
Jun 04 Python
django之从html页面表单获取输入的数据实例
Mar 16 Python
使用Keras训练好的.h5模型来测试一个实例
Jul 06 Python
Python getattr()函数使用方法代码实例
Aug 10 Python
Pytest allure 命令行参数的使用
Apr 18 Python
实操Python爬取觅知网素材图片示例
Nov 27 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
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
php实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
一个简单的js动画效果代码
2010/07/20 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
2013/05/17 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
jquery按回车提交数据的代码示例
2013/11/05 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
[01:05:41]EG vs Optic Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
python实现AES加密与解密
2019/03/28 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
2019/05/29 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
罗兰·穆雷官网:Roland Mouret
2018/09/28 全球购物
售后专员岗位职责
2013/12/08 职场文书
优秀学生获奖感言
2014/02/15 职场文书
移风易俗倡议书
2014/04/15 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
网络工程专业大学生求职信
2014/10/01 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
郭明义电影观后感
2015/06/08 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js
Vue全局事件总线你了解吗
2022/02/24 Vue.js