前面小编已经和大家分享了数据结构中列表、字典、元祖,这是我能常用的三种结构方法,细心的小伙伴会发现,小编在上一篇文中结尾有说到,会继续分享数据结构与算法。
话不多说,我们接着上篇文章一起看看,如果大家有些许忘记,可以回去重新看一看,带你3分钟快速浏览完毕。
先来看数据结构中小编未讲到的“漏网之鱼”
顺序表
别人都说字如其名,在这里是字如其表,顺序表采用顺序存储的方式来存储数据元素的线性表。
创建顺序表:
class SequenceList:
def __init__(self):
self.SeqList = []
def CreateSequenceList(self):
Element = input("请输入(按回车键确认,按#键结束):")
while Element !='#':
self.SeqList.append(int(Element))
Element = input("请输入(按回车键确认,按#键结束):")
list_1 = SequenceList()
list_1.CreateSequenceList()
结果:
两种基本实现方式
一体式结构:
存储表信息的单元与元素存储区以连续的方式安排在一块存储区里,两部分数据的整体形成一个完整的顺序表对象。一体式结构整体性强,易于管理。但是由于数据元素存储区域是表对象的一部分,顺序表创建后,元素存储区就固定了。
分离式结构:
表对象里只保存与整个表有关的信息(即容量和元素个数),实际数据元素存放在另一个独立的元素存储区里,通过链接与基本表对象关联。
遍历顺序表元素
class SequenceList:
def __init__(self):
self.SeqList = []
def CreateSequenceList(self):
Element = input("请输入(按回车键确认,按#键结束):")
while Element !='#':
self.SeqList.append(int(Element))
Element = input("请输入(按回车键确认,按#键结束):")
def TraverseElement(self):
for i in range(len(self.SeqList)):
print(self.SeqList[i],end = ' ')
list_1 = SequenceList()
list_1.CreateSequenceList()
list_1.TraverseElement()
结果:
链表
顺序表只能用来申请连续的存储空间,如果需要进行数据搬迁,使用起来就更笨拙,但是链表结构可以充分利用计算机的内存空间,实现灵活的内存动态管理。
单链表
单个链接列表中的节点只指向列表中的下一个元素。
双链表
一个链表可以从头到尾遍历,而反向遍历则比较难,双链接列表允许以相同的成本在两个方向上遍历节点,无论从哪个节点开始,不过在双链接列表中,必须更改四个指针。
数据结构的分享就到这里了,还有小编没有说到的内容,欢迎大家在评论区来说一说。
接下来就会着重分享算法的知识,我们先来了解一下基本概念。
算法:
计算机完成一个任务的整个流程即为一种算法。概念上讲,算法和数据结构没有任何联系,但一般地,使用不同的数据结构实现同一功能往往效率不同,因此,算法与数据结构密不可分。
算法的五大特性
输入: 算法具有0个或多个输入;
输出: 算法至少有1个或多个输出;
有穷性: 算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在可接受的时间内完成;
确定性:算法中的每一步都有确定的含义,不会出现二义性;
可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成;
Python中的数据结构和算法都是非常重要的知识点,虽然是以干货为主,学起来会有一些枯燥,但是等你学完之后,无论是操作爬虫还是其他都将如鱼得水。
算法在这一节内容只分享了一丢丢,如果你想继续深入学习,关注小编,我们下一篇文章见面!
閱讀更多 Q小小科技 的文章