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