Python3中的线性结构——stack&deque

博客简介

本篇博客介绍Python中常见的数据结构两种数据结构stack&deque,后序还会继续完善:

  • 栈stack
  • 双端队列deque

将列表作为栈stack

栈是一种简单却作用巨大的结构,具有后进先出的特性FILO,对于压栈和弹栈的操作,我们可以直接用List来操作,可以方便的使用append(),pop()操作。以下是List的函数方法:

序号 函数
1 len(list)
列表元素个数
2 max(list)
返回列表元素最大值
3 min(list)
返回列表元素最小值
4 list(seq)
将元组转换为列表
方法 描述
list.append(x) 把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。
list.pop([i]) 从列表的指定位置移除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素。元素随即从列表中被移除。(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,你会经常在 Python 库参考手册中遇到这样的标记。)
list.extend(L) 通过添加指定列表的所有元素来扩充列表,相当于 a[len(a):] = L。
list.insert(i, x) 在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x) 。
list.remove(x) 删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。
list.clear() 移除列表中的所有项,等于del a[:]。
list.index(x) 返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。
list.count(x) 返回 x 在列表中出现的次数。
list.sort() 对列表中的元素进行排序。
list.reverse() 倒排列表中的元素。
list.copy() 返回列表的浅复制,等于a[:]。

实现举例:

def main():
	stack=[]
	print("in stack")
	for i in range(10):
		stack.append(i)
		print(i,end=' ')
	print("out stack")
	for j in range(10):
		print(stack.pop(),end=' ')
	print("length of stack is:",len(stack))
main()
'''
in stack
0 1 2 3 4 5 6 7 8 9 out stack
9 8 7 6 5 4 3 2 1 0 length of stack is: 0
'''

双端队列deque

双端对列具有两端进入,两端弹出的特性,在处理一些对称性问题是否有效,同时deque也具有queue的先进先出的特性FIFO,广泛应用于深度搜索:

  • 右端入队列:deque.append()
  • 右端出队列:deque.pop()
  • 左端入队列:deque.appendleft()
  • 左端出队列:deque.popleft()
  • 判断长度:len(deque)
  • 头文件:from collections import deque

用法举例

from collections import deque
def main():
	que=deque()
	a=["A","B","C"]
	b=[1,2,3,4,5,6]
	for x in a:
		que.append(x)
		
	print("popleft:",end=' ')
	for i in range(3):
		print(que.popleft(),end=' ')
		
	for x in b:
		que.append(x)
	print("\npop:",end=' ')
	
	for i in range(6):
		print(que.pop(),end=' ')
	print("\nlen:",len(que))	
	que.appendleft(1)
	print(que)
main()
'''
popleft: A B C
pop: 6 5 4 3 2 1
len: 0
deque([1])
'''
发布了191 篇原创文章 · 获赞 377 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_44307065/article/details/104573702