deque是double-ended queue的缩写, 叫做双端队列,可以实现从队列头部快速增加和取出对象: popleft()和appendleft()
虽然list也有pop()和append的方法,但是时间复杂度是O(n),而使用deque是复杂度为O(1).
还有其他的方法如下:
append:同list的append,在队尾加入一个元素
appendleft:在队首加入一个元素
clear:清空队列
copy:浅拷贝,b=a.copy(),关于深浅拷贝的区别,浅拷贝复制的是引用,深拷贝的话复制的是不可变元素的引用和可变元素的复制;我觉得一篇文章写得特别好,请关注https://blog.csdn.net/qq_32907349/article/details/52190796
count:a.count(1),a中1的数量
extend:参数是一个可迭代变量,在右端按照迭代顺序添加
extendleft:同上,不过是在左端按照迭代顺序添加
index:和list的相类似,用于找出某个值第一个匹配项的索引位置。
insert:和list的相同,插入元素insert(index,obj),在index前插入元素,如果index超过长度就会插到最后,如果长度已经是最长,再插入会报错
maxlen:用于定义的时候使用,不是一个可以被writed的对象,形如a.maxlen=10会报错
pop:队尾元素删去
popleft:队头元素删去
remove:同list:用于移除列表中某个值的第一个匹配项。
reverse:倒序
rotate:循环移动,为正全体右移,为负全体左移
from collections import deque
# 创建 a = deque(iterable, maxlen)
a = deque((1,))
a = deque(maxlen=5) # 创建一个长度为5的空双端队列
a = deque() # 创建空的双端队列
a = deque([1, 2, 3], maxlen=2)
# 追加和扩展队列
a.append(3)
a.append(4)
a.append(5) # 因为设置了maxlen的最大长度为2,因此每次append一个元素,最左边的就会自动弹出
a.appendleft('t')
a.extend(['m','t','j'])
a.extendleft(['l','h','h'])
# 出队列
d = deque('123456tsy') # 将字符串分割成字符
d.pop()
d.popleft() # 弹出最左侧元素
# 清空队列
d.clear()
# 返回指定元素的出现次数
d.count('3')
# 查找某个元素的索引位置
d.index('l')
d.index('l', 0, 5) # 指定查找区间
# 在指定位置插入元素
d.insert(2, 'f')
# 删除指定元素, 注意只能删除找到的指定元素的第一个
d.remove('h')
# 反转队列
d.reverse()
print(d)
# 循环移动队列中的元素
d.rotate(-2) # 整体循环左移两步
d.rotate(3) # 整体循环右移三步
转自 https://www.cnblogs.com/mangmangbiluo/articles/9805939.html