Python中顺序表的实现简单代码分享
作者:小黄人python 时间:2022-08-31 22:26:36
顺序表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