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 相关文章推荐
把MySQL表结构映射为Python中的对象的教程
Apr 07 Python
python正则分析nginx的访问日志
Jan 17 Python
Python使用matplotlib实现基础绘图功能示例
Jul 03 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
Oct 14 Python
python3.6实现学生信息管理系统
Feb 21 Python
python基于TCP实现的文件下载器功能案例
Dec 10 Python
Python的对象传递与Copy函数使用详解
Dec 26 Python
python爬取本站电子书信息并入库的实现代码
Jan 20 Python
tensorflow模型继续训练 fineturn实例
Jan 21 Python
python自动脚本的pyautogui入门学习
Apr 01 Python
python中Ansible模块的Playbook的具体使用
May 28 Python
Python学习开发之图形用户界面详解
Aug 23 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数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
Jquery实时监听input value的实例
2017/01/26 Javascript
js中Number数字数值运算后值不对的解决方法
2017/02/28 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
Vue实现数据请求拦截
2019/10/23 Javascript
如何在Express4.x中愉快地使用async的方法
2020/11/18 Javascript
Python端口扫描简单程序
2016/11/10 Python
Python更新数据库脚本两种方法及对比介绍
2017/07/27 Python
python使用邻接矩阵构造图代码示例
2017/11/10 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
python 负数取模运算实例
2020/06/03 Python
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
写给妈妈的道歉信
2014/01/11 职场文书
社区敬老月活动实施方案
2014/02/17 职场文书
秘书英文求职信
2014/04/16 职场文书
防火标语大全
2014/10/06 职场文书
2014年医生工作总结
2014/11/21 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
教务处教学工作总结
2015/08/10 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis
win sever 2022如何占用操作主机角色
2022/06/25 Servers