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操作RabbitMQ服务器消息队列的远程结果返回
Jun 30 Python
python3基于OpenCV实现证件照背景替换
Jul 18 Python
Python爬虫设置代理IP(图文)
Dec 23 Python
Python实现蒙特卡洛算法小实验过程详解
Jul 12 Python
django rest framework vue 实现用户登录详解
Jul 29 Python
python实现超市管理系统(后台管理)
Oct 25 Python
python使用yield压平嵌套字典的超简单方法
Nov 02 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
Jan 03 Python
解决windows下python3使用multiprocessing.Pool出现的问题
Apr 08 Python
python能否java成为主流语言吗
Jun 22 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
Sep 24 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
Nov 17 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中使用Oracle数据库(3)
2006/10/09 PHP
PHP parse_url 一个好用的函数
2009/10/03 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
使两个iframe的高度与内容自适应,且相等
2006/11/20 Javascript
优化javascript的执行速度
2010/01/23 Javascript
8个超棒的学习 jQuery 的网站 推荐收藏
2011/04/02 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
vue项目开启Gzip压缩和性能优化操作
2020/10/26 Javascript
举例讲解Python中装饰器的用法
2015/04/27 Python
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
python写一个md5解密器示例
2018/02/23 Python
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
css3实现简单的白云飘动背景特效
2020/10/28 HTML / CSS
荷兰超市:DEEN
2018/03/14 全球购物
面试后感谢信
2014/02/01 职场文书
市级文明单位申报材料
2014/05/07 职场文书
高考1977观后感
2015/06/04 职场文书
庆祝教师节新闻稿
2015/07/17 职场文书
会议主持词通用版
2019/04/02 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
解读Vue组件注册方式
2021/05/15 Vue.js