python数据结构:数组、列表、栈、队列及实现

梦魇762459510 2021-11-25 18:29:23
Python 数据结构 数组 数据 结构

首先,我们要分清楚一些概念和他们之间的关系

数组(array) 表(list) 链表(linked list) 数组链表(array list) 队列(queue) 栈(stack)

image

list列表

array数组

python中内置list数据结构 存放的数据类型可以不同。

但是有个缺点 list存放的是数据的索引也就是指针 这需要数据的原有存储加上数据的指针 增加了消耗。

python中numpy库的array 存放单一类型数据 。

python中数组并不是基本数据类型 但是可以调用array库 或者numpy库使用数组array 。

array库只能创建一维数组 numpy中的数组适用性非常广 建议使用numpy。

1 import array
2 arr=array.array('i',[1,2,3,4]) #创建数组
3 print(arr,type(arr))

相互转换

1 import numpy as np
2 arr=np.array([1,2,3,4]) #创建数组
3 li=arr.tolist() #数组转换为列表
4 new_arr=np.array(li) #列表转数组
5 print(arr,type(arr))
6 print(li,type(li))
7 print(new_arr,type(new_arr))
#输出
[1 2 3 4] <class 'numpy.ndarray'>
[1, 2, 3, 4] <class 'list'>
[1 2 3 4] <class 'numpy.ndarray'>

可以发现list元素之间有逗号隔开,array之间没有符号隔开

Queue队列 -只允许在一段进行删除操作在另一端进行插入操作的数组结构

Stack栈 -删除与插入操作在同一端进行的数组结构

特点

Queue -先进先出 FIFO first in first out

Stack -先进后出 FILO first in last out

共同点:栈和队列都是一种操作受限制的线性表

用途:栈:表达式的括号匹配问题,迷宫求解

队列:银行排队,操作系统进程问题,舞伴问题

如果你的时间不是很紧张,并且又想快速的python提高,最重要的是不怕吃苦,建议你可以架微信:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

python实现队列:(有注释)

 1 class Node(object):
2 def __init__(self,val): #节点传入值
3 self.next=None #每个节点定义2个属性 next指向下一个位置
4 self.val=val # val 节点的值
5
6 class Queue(object):
7 def __init__(self):
8 self.first=None #每个队列定义2个属性 first删除端
9 self.last=None # last插入端
10
11 def enqueue(self,n):
12 n=Node(n)
13 if(self.first==None): #如果队列为空
14 self.first=n
15 self.last=n
16 else: #如果队列不为空
17 self.last.next=n #插入端的指向为n
18 self.last=n #插入端的最后一个值为n
19
20 def dequeue(self):
21 if (self.first==None):
22 return None
23 else:
24 reval=self.first.val
25 self.first=self.first.next #将删除端的第一个指定为下一个
26 return reval
27 def allquit(self): # allquit作用:队列中元素放入list中方便打印
28 alist=[]
29 while (self.first!=None): #循环
30 temp=self.first.val #和dequeue的操作相同
31 self.first=self.first.next
32 alist.append(temp)
33 return alist
34
35 if __name__ == "__main__":
36 q=Queue()
37 q.enqueue(1)
38 q.enqueue(2)
39 q.enqueue(3)
40 q.dequeue()
41 print(q.allquit())

python实现栈:(有注释)

 1 class Node(object):
2 def __init__(self,val):
3 self.next=None
4 self.val=val
5 class Stack(object):
6 def __init__(self):
7 self.top=None #和queue不同栈删除插入都在一端 所以只定义一个位置
8
9 def push(self,n):
10 n=Node(n)
11 if(self.top==None): #如果栈为空
12 self.top=n
13 else:
14 n.next=self.top #插入元素的下一个为顶格元素
15 self.top = n #顶格元素为插入值
16
17 def pop(self): #删除顶格元素
18 if(self.top==None): #如果栈为空
19 return None
20 else:
21 temp=self.top.val
22 self.top=self.top.next #新的顶格元素为老顶格元素的上一个
23 return temp
24
25 def allquit(self): #打印栈方法
26 alist=[]
27 while(self.top!=None): #循环
28 temp=self.top.val #和pop()方法操作相同
29 self.top=self.top.next
30 alist.append(temp)
31 print(alist)
32
33 if __name__== "__main__" :
34 s=Stack()
35 s.push(1)
36 s.push(3)
37 s.push(5)
38 s.pop()
39 s.allquit()
版权声明
本文为[梦魇762459510]所创,转载请带上原文链接,感谢
https://blog.csdn.net/MC_XY/article/details/121540145

  1. [learning notes] Python - pyecarts
  2. Python automated operation and maintenance -- actual combat (I)
  3. Python 多分支语句的三种结构
  4. Python 输出指定范围的闰年
  5. Fatal Python error: init_ fs_ encoding: failed to get the Python codec of the filesystem encoding
  6. Using Python to obtain a video address is as simple as
  7. #yyds干货盘点# 6. Python 元组,不可变的列表,滚雪球学 Python
  8. Yyds Dry Inventory # 6. Python tuples, invariant List, snowball Learning Python
  9. You cannot enter the registration page using Django registration redux
  10. 笨办法学Python第十八天:更多文件操作
  11. Python编辑代码,帮个忙呗
  12. pandas转换object为int失败了,有人能解答吗
  13. python解释题,解释这串,所代表的意思
  14. 用python用while语句写1000以内能被5和9整除的数和个数
  15. #python 我写了一个“饭店”程序
  16. Comprehensive application of Python foundation -- Development
  17. Écrivez en python le nombre et le nombre d'entiers qui peuvent être divisés par 5 et 9 jusqu'à 1000 dans une instruction while
  18. python3.7 FileNotFoundError: [WinError 2] 系统找不到指定的文件。
  19. 最全面的Python重点知识汇总
  20. You can learn Python articles without reading online classes (day 4)
  21. You can learn Python articles without reading online classes (the third day)
  22. python中 我想爬取一个网页,我在cmd中pip list中已经把requests 以及bs4 弄好了 但是他还是提示我没有那个模块
  23. You can learn Python articles without reading online classes (the next day)
  24. You can learn Python articles without reading online classes (the first day)
  25. 在Python和Go项目之后使用Rust的经验分享 - scaleway
  26. 使用PyO3从Python调用 Rust:加速Python
  27. Python 3.7 filenotfounderror: [winerror 2] le système n'a pas pu trouver le fichier spécifié.
  28. Python 一切皆对象
  29. 【Pandas学习笔记01】强大的分析结构化数据的工具集
  30. 求各位亲们可以解答一下嘛,为什么跑不出来呀,大学Python
  31. 【Pandas学习笔记01】强大的分析结构化数据的工具集
  32. python飞机大战如何让飞机始终在界面中,不能跑出界面
  33. Python代码阅读(第63篇):数字奇偶性
  34. python建立⼀個圖形介⾯應⽤(GUI app)
  35. python接口自动化的html格式报告以邮件形式发送展示的原文很丑怎么处理
  36. 针对初学者,我建议你学这 3 个 Python AutoEDA 工具包
  37. #yyds干货盘点#Python-爬虫_urlib一个类型和六个方法
  38. Pour les débutants, je vous recommande d'apprendre ces 3 kits autoeda Python
  39. 我想问python怎么入门嘞?求各路人士
  40. Summary of today's Django lessons: data reverse query triggers error field 'score_ jieshoufankui‘ expected a number but got ‘‘-20211109
  41. 关于#python_while循环的写法#的问题,如何解决?
  42. Python异常处理中异常的种类有哪些?你知道几个?
  43. Python异常處理中异常的種類有哪些?你知道幾個?
  44. Quels sont les types d'exceptions dans la gestion des exceptions python? Combien en savez - vous?
  45. À propos de # Python Comment résoudre le problème de l'écriture de la Boucle while?
  46. Python如何操作system.data.sqlite数据库
  47. python数字游戏,让你欲罢不能
  48. Python中的可迭代对象、迭代器、For循环工作机制、生成器
  49. 一个从没接触过编程的人,如何自学进入Python行业?
  50. 一份超级实用的 Python ”技巧“清单
  51. Python 程序员给上路初学者的3点忠告
  52. 3 conseils pour les débutants sur la route par les programmeurs Python
  53. Une liste de conseils Python super pratiques
  54. Comment quelqu'un qui n'a jamais été en contact avec la programmation peut - il apprendre à entrer dans l'industrie python?
  55. Objets itérables, itérateurs, pour le mécanisme de travail circulaire, générateurs en python
  56. Les Jeux de chiffres Python vous font vous arrêter
  57. Comment Python fonctionne avec la base de données system.data.sqlite
  58. Python之html与markdown互相转换
  59. Python之html與markdown互相轉換
  60. Conversion HTML et markdown de Python