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 分析Nginx访问日志并保存到MySQL数据库实例
Mar 13 Python
python操作CouchDB的方法
Oct 08 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
Dec 04 Python
python如何为创建大量实例节省内存
Mar 20 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
python爬虫爬取微博评论案例详解
Mar 27 Python
python3安装OCR识别库tesserocr过程图解
Apr 02 Python
python中rb含义理解
Jun 18 Python
Python sqlalchemy时间戳及密码管理实现代码详解
Aug 01 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
Nov 17 Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 Python
Python Pandas常用函数方法总结
Jun 15 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中的字符串函数
2006/10/09 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
使用js修改客户端注册表的方法
2013/08/09 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
vue获取DOM元素并设置属性的两种实现方法
2017/09/30 Javascript
使用webpack搭建vue项目实现脚手架功能
2019/03/15 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
对Python 3.5拼接列表的新语法详解
2018/11/08 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
浅谈python常用程序算法
2019/03/22 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
2020/10/10 Python
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
TUMI新加坡官网:国际领先的商旅箱包品牌
2019/01/12 全球购物
英国现代、当代和设计师家具店:Furntastic
2020/07/18 全球购物
Java中实现多态的机制是什么?
2014/12/07 面试题
Linux的文件类型
2012/03/07 面试题
大学生就业自荐书
2014/06/16 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
个人收入证明格式
2015/06/24 职场文书