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获取目录下所有文件的方法
Jun 01 Python
Python统计日志中每个IP出现次数的方法
Jul 06 Python
Python存取XML的常见方法实例分析
Mar 21 Python
详解python函数传参是传值还是传引用
Jan 16 Python
浅谈flask中的before_request与after_request
Jan 20 Python
Django学习教程之静态文件的调用详解
May 08 Python
Pandas Shift函数的基础入门学习笔记
Nov 16 Python
Python绘图实现显示中文
Dec 04 Python
python读取配置文件方式(ini、yaml、xml)
Apr 09 Python
使用Python构造hive insert语句说明
Jun 06 Python
python drf各类组件的用法和作用
Jan 12 Python
Python爬虫入门教程02之笔趣阁小说爬取
Jan 24 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 xml实例 留言本
2009/03/20 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
简单的JS多重继承示例
2008/03/13 Javascript
jquery 模拟雅虎首页的点击对话框效果
2010/04/11 Javascript
js中的this关键字详解
2013/09/25 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
Node.js编程中客户端Session的使用详解
2015/06/23 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
2016/11/21 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
2017/01/22 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
js验证身份证号码记录的方法
2019/04/26 Javascript
jquery 验证用户名是否重复代码实例
2019/05/14 jQuery
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
python关闭windows进程的方法
2015/04/18 Python
Python选课系统开发程序
2016/09/02 Python
关于Django外键赋值问题详解
2017/08/13 Python
Python输出各行命令详解
2018/02/01 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
复古风格的女装和装饰品:ModCloth
2017/12/29 全球购物
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
预备党员入党思想汇报
2014/01/04 职场文书
蛋糕店的商业计划书范文
2014/01/27 职场文书
我的梦想演讲稿
2014/04/30 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
2014个人年度工作总结
2014/12/15 职场文书
素质拓展训练感想
2015/08/07 职场文书
八年级作文之一起的走过日子
2019/09/17 职场文书
导游词之潮音寺
2019/09/26 职场文书