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 相关文章推荐
深入理解NumPy简明教程---数组2
Dec 17 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
Jul 06 Python
python opencv实现旋转矩形框裁减功能
Jul 25 Python
opencv实现图片模糊和锐化操作
Nov 19 Python
超简单使用Python换脸实例
Mar 27 Python
python实时检测键盘输入函数的示例
Jul 17 Python
什么是Python包的循环导入
Sep 08 Python
Django返回HTML文件的实现方法
Sep 17 Python
Python confluent kafka客户端配置kerberos认证流程详解
Oct 12 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
Oct 18 Python
python中remove函数的踩坑记录
Jan 04 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的可变变量名的使用方法分享
2012/02/05 PHP
var与Javascript变量隐式声明
2009/09/17 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
2013/09/02 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
AngularJS实现的回到顶部指令功能实例
2017/05/17 Javascript
Angular实现下载安装包的功能代码分享
2017/09/05 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
layui按条件隐藏表格列的实例
2019/09/19 Javascript
简单了解Vue computed属性及watch区别
2020/07/10 Javascript
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
Python类的专用方法实例分析
2015/01/09 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
Numpy掩码式数组详解
2018/04/17 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
python try...finally...的实现方法
2020/11/25 Python
python 数据类型强制转换的总结
2021/01/25 Python
HTML5 video标签(播放器)学习笔记(二):播放控制
2015/04/24 HTML / CSS
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
苏州园林导游词
2015/02/03 职场文书
离婚被告答辩状
2015/05/22 职场文书
小学2016年“我们的节日·重阳节”活动总结
2016/04/01 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
字节飞书面试promise.all实现示例
2022/06/16 Javascript
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js