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使用循环实现批量创建文件夹示例
Mar 25 Python
在Django的session中使用User对象的方法
Jul 23 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
Oct 13 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
pandas全表查询定位某个值所在行列的方法
Apr 12 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
Apr 12 Python
Python3操作Excel文件(读写)的简单实例
Sep 02 Python
Python qrcode 生成一个二维码的实例详解
Feb 12 Python
通过python调用adb命令对App进行性能测试方式
Apr 23 Python
python用字节处理文件实例讲解
Apr 13 Python
Python 批量下载阴阳师网站壁纸
May 19 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
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
2016/10/08 PHP
php compact 通过变量创建数组
2016/11/15 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
JavaScript事件处理器中的event参数使用介绍
2013/05/24 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
js实现缓冲运动效果的方法
2015/04/10 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
Node.js中process模块常用的属性和方法
2016/12/13 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
js中值引用和地址引用实例分析
2019/06/21 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
Vue切换div显示隐藏,多选,单选代码解析
2020/07/14 Javascript
JavaScript快速调试的两个技巧
2020/11/04 Javascript
Python实现线程状态监测简单示例
2018/03/28 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
Flask处理Web表单的实现方法
2021/01/31 Python
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
长曲棍球装备:Lacrosse Monkey
2020/12/02 全球购物
C#可否对内存进行直接的操作
2015/02/26 面试题
学校大课间活动方案
2014/01/30 职场文书
情侣吵架检讨书
2014/02/05 职场文书
路政管理毕业自荐书范文
2014/02/10 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
餐厅开业活动方案
2019/07/08 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python