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聊天程序实例代码分享
Nov 18 Python
Python中的赋值、浅拷贝、深拷贝介绍
Mar 09 Python
Python MySQLdb模块连接操作mysql数据库实例
Apr 08 Python
Python实现迭代时使用索引的方法示例
Jun 05 Python
对TensorFlow的assign赋值用法详解
Jul 30 Python
Python json模块dumps、loads操作示例
Sep 06 Python
Python3中关于cookie的创建与保存
Oct 21 Python
django drf框架自带的路由及最简化的视图
Sep 10 Python
利用Python绘制Jazz网络图的例子
Nov 21 Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 Python
2021年最新用于图像处理的Python库总结
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
怎么样可以把 phpinfo()屏蔽掉?
2006/11/24 PHP
PHP simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
PHP中遍历stdclass object的实现代码
2011/06/09 PHP
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
PHP合并静态文件详解
2014/11/14 PHP
php简单解析mysqli查询结果的方法(2种方法)
2016/06/29 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
用jquery.sortElements实现table排序
2014/05/04 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
在vue项目中使用Nprogress.js进度条的方法
2018/01/31 Javascript
js+canvas绘制图形验证码
2020/09/21 Javascript
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
python双向链表原理与实现方法详解
2019/12/03 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
2020/11/12 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
一款基于css3的动画按钮代码教程
2014/11/23 HTML / CSS
HTML5 视频播放(video),JavaScript控制视频的实例代码
2018/10/08 HTML / CSS
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
办公室副主任岗位职责
2013/11/25 职场文书
环保倡议书500字
2014/05/15 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
高考学习决心书
2015/02/04 职场文书
家装业务员岗位职责
2015/04/03 职场文书
庆七一晚会主持词
2015/06/30 职场文书
倡议书怎么写?
2019/04/11 职场文书
vue中三级导航的菜单权限控制
2021/03/31 Vue.js
Python中Selenium对Cookie的操作方法
2021/07/09 Python
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers
Python绘制散点图之可视化神器pyecharts
2022/07/07 Python