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实现得到一个给定类的虚函数
Sep 28 Python
wxPython中listbox用法实例详解
Jun 01 Python
python实现查找两个字符串中相同字符并输出的方法
Jul 11 Python
python opencv 图像尺寸变换方法
Apr 02 Python
python excel使用xlutils类库实现追加写功能的方法
May 02 Python
更改Python的pip install 默认安装依赖路径方法详解
Oct 27 Python
Pandas统计重复的列里面的值方法
Jan 30 Python
详解如何用TensorFlow训练和识别/分类自定义图片
Aug 05 Python
Django中的cookie和session
Aug 27 Python
如何使用python代码操作git代码
Feb 29 Python
jupyter notebook的安装与使用详解
May 18 Python
python 可视化库PyG2Plot的使用
Jan 21 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
删除无限级目录与文件代码共享
2006/07/12 PHP
php中文验证码实现示例分享
2014/01/12 PHP
PHP使用file_get_content设置头信息的方法
2016/02/14 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
jquery专业的导航菜单特效代码分享
2015/08/29 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
JavaScript函数的特性与应用实践深入详解
2018/12/30 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
在Python的web框架中中编写日志列表的教程
2015/04/30 Python
python实现备份目录的方法
2015/08/03 Python
Python数据操作方法封装类实例
2017/06/23 Python
python与C互相调用的方法详解
2017/07/14 Python
python基础知识(一)变量与简单数据类型详解
2019/04/17 Python
python读取并写入mat文件的方法
2019/07/12 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
新教师工作感言
2014/02/16 职场文书
诚信贷款承诺书
2014/05/30 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
采购员岗位职责
2015/02/03 职场文书
三下乡活动心得体会
2016/01/23 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书
使用@Value值注入及配置文件组件扫描
2021/07/09 Java/Android