在python中,列表既可以作为栈使用,又可以作为队列使用。
把列表作为栈使用
栈:后进先出
stack=[1,2,3] stack.append(4) #入栈,以列表尾部为栈顶 print(stack.pop()) #出栈 4 print(stack) #[1, 2, 3]
把列表作为队列使用
队列:先进先出

from collections import deque list=[1,2,3] queue=deque(list) #将列表转换为队列 queue.append(0) #入队,添加到队列尾部 print(queue.popleft()) #出队,弹出并返回队首元素 print(queue) #deque([2, 3, 0]) #把列表作为队列使用,效率不高,因为出队时要移动后面所有的元素。

deque
deque 是双边队列,同时具有栈和队列的性质,可进行栈、队列相关的操作。并且还在在 list 的基础上增加了移动、旋转和增删等操作。

from collections import deque #需要导入模块 list=[1,2,3] deque=deque(list) #将列表转换为deque deque.append(4) #添加到尾部 print(deque) #deque([1, 2, 3, 0]) deque.appendleft(0) #添加到首部 print(deque) #deque([0, 1, 2, 3, 4]) print(deque.pop()) #弹出并返回最后一个元素 4 print(deque) #deque([0, 1, 2, 3]) print(deque.popleft()) #弹出并返回左边第一个元素 0 print(deque) #deque([1, 2, 3])

deque实现栈:

from collections import deque #需要导入模块 list=[1,2,3] deque=deque(list) #将列表转换为deque #作为栈使用:方式一 deque.append(4) #入栈 print(deque) #deque([1, 2, 3, 4]) print(deque.pop()) #出栈 4 print(deque) #deque([1, 2, 3]) #作为栈使用:方式二 deque.appendleft(0) #入栈 print(deque) #deque([0,1, 2, 3]) print(deque.pop()) #出栈 3 print(deque) #deque([0, 1, 2]) #只要实现后进先出即可

deque实现队列:

from collections import deque #需要导入模块 list=[1,2,3] deque=deque(list) #将列表转换为deque #作为队列使用:方式一 deque.append(4) #入队 print(deque) #deque([1, 2, 3, 4]) print(deque.popleft()) #出队 1 print(deque) #deque([2, 3, 4])


from collections import deque #需要导入模块 list=[] #空列表 deque=deque(list) #作为队列使用:方式二 deque.appendleft(1) #入队 deque.appendleft(2) print(deque) #deque([2, 1]) print(deque.pop()) #出队 1 print(deque) #deque([2]) #这种方式需要list是空的 #只要实现先进先出即可

实现栈、队列时,一般是使用空列表[]。
本文介绍如何在Python中使用列表和deque来实现栈和队列的数据结构。详细解释了栈(后进先出)和队列(先进先出)的概念,并展示了具体的代码实现过程。
1164

被折叠的 条评论
为什么被折叠?



