python 双端队列dequeue

双端队列与队列的区别在于队列是只能按顺序进行存取,而双向队列可以随意位置存入数据,取数据的时候可以从队列的开始位置按顺序取数据,也可以从队列的后面按顺序取数据。

比如:有一个队列的值为:test1,test2,test3,test4,test5,test6 ;如果新增1个值:new7,

对于队列而言只能放在最后的位置:test1,test2,test3,test4,test5,test6,new7。取值时只能从队列

开始位置:test1开始取然后按顺序:test2,test3,test4,test5,test6,new7;

而对于双端队列而言可以在任意地方存入值,如:test1,test2,   new7   ,test3,test4,test5,test6,取值时可以从test1

开始位置取:test1,test2,   new7   ,test3,test4,test5,test6 , 也可以从test6位置开始取:test6,test5,test4,test3, new7,test2,test1。

总体而言,双端队列感觉就像是Queue和LifoQueue的整合加强版。

 

导入dequeue 类

from collections import deque

创建队列

#创建队列
dq = deque()
按顺序向队列添加数据
#按顺序向队列添加数据
dq.append("test1")
dq.append("test2")
dq.append("test3")
dq.append("test4")
dq.append("test5")
dq.append("test6")
在开始位置添加数据
#在开始位置添加数据
dq.appendleft("left_new1")
根据索引位置添加数据
#根据索引位置添加数据
dq.insert(3,"index_3_new1")
获取队列的大小
#获取队列的大小
print("队列的数据大小",len(dq))
获取队列值的索引位置
#获取队列值的索引位置
print("获取数据:test4 的索引位置:",dq.index("test4"))
查看队列的全部数据
#查看队列的全部数据
print(dq)
从结束位置取值
# 从结束位置取值
print("从结束位置取值",dq.pop())
从开始位置取值
# 从开始位置取值
print("从开始位置取值",dq.popleft())

代码:

#encoding:utf-8
from collections import deque

#创建队列
dq = deque()

#按顺序向队列添加数据
dq.append("test1")
dq.append("test2")
dq.append("test3")
dq.append("test4")
dq.append("test5")
dq.append("test6")

#在开始位置添加数据
dq.appendleft("left_new1")

#根据索引位置添加数据
dq.insert(3,"index_3_new1")

#获取队列的大小
print("队列的数据大小",len(dq))

#获取队列值的索引位置
print("获取数据:test4 的索引位置:",dq.index("test4"))

#查看队列的全部数据
print(dq)

# 从结束位置取值
print("从结束位置取值",dq.pop())

# 从开始位置取值
print("从开始位置取值",dq.popleft())

运行结果:

队列的数据大小 8
获取数据:test4 的索引位置: 5
deque(['left_new1', 'test1', 'test2', 'index_3_new1', 'test3', 'test4', 'test5', 'test6'])
从结束位置取值 test6
从开始位置取值 left_new1

 

posted @ 2022-07-16 22:07  西夏一品唐  阅读(429)  评论(0编辑  收藏  举报