Python中顺序表的实现简单代码分享

作者:小黄人python 时间:2022-08-31 22:26:36 

顺序表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数据结构之顺序表的实现代码示例,当中有对顺序表略微详细的介绍。小编对此知识点理解不够透彻,以后还会继续研究的。

来源:https://www.cnblogs.com/xautxuqiang/p/6098137.html

标签:python,数据结构,顺序表
0
投稿

猜你喜欢

  • Pytorch平均池化nn.AvgPool2d()使用方法实例

    2023-09-30 02:49:35
  • 如何使用Git实现切换分支开发过程解析

    2022-07-03 20:57:06
  • .net连接Mysql封装类代码 可直接调用

    2024-01-14 15:16:16
  • 详解Django3中直接添加Websockets方式

    2021-01-05 01:43:22
  • MySQL定时任务不能正常执行的原因分析及解决方法

    2024-01-23 16:28:24
  • Python中DataFrame判断两列数据是否相等的方法

    2023-12-09 10:17:37
  • python实现mask矩阵示例(根据列表所给元素)

    2022-04-19 19:37:16
  • python分析apache访问日志脚本分享

    2021-08-12 04:20:09
  • flask框架路由常用定义方式总结

    2021-04-18 22:12:29
  • WSC脚本部件技术:利用Javascript编写ActiveX控件

    2008-05-05 13:13:00
  • ASP初学者常犯的几个错误

    2007-09-07 10:19:00
  • Python实现从URL地址提取文件名的方法

    2023-11-28 02:39:48
  • 浅述七大主流数据库

    2011-08-05 18:21:27
  • vue中使用props传值的方法

    2024-05-03 15:10:50
  • Pygame Event事件模块的详细示例

    2022-04-23 14:55:46
  • MySQL开发规范与使用技巧总结

    2024-01-19 00:44:00
  • perl大文件读取处理的模块介绍

    2023-12-27 20:10:27
  • Python hashlib常见摘要算法详解

    2023-07-29 20:04:09
  • PyQt5实现多张图片显示并滚动

    2021-09-14 16:34:05
  • Oracle动态交叉表生成

    2010-07-27 12:55:00
  • asp之家 网络编程 m.aspxhome.com