Deque是在collections模块中实现的双向列表数据结构,适合快速在容器两端插入和删除数据。它在容器两端操作的时间复杂度为O(1),相比list(O(n))要快很多,因为list是线性存储,数据量大的时候,插入和删除效率很低。
deque操作 append() :在deque右端插入一个元素 appendleft() :在deque左端插入一个元素 pop() :在deque右端删除一个元素 popleft() :在deque左端删除一个元素 import collections # 初始化deque de = collections.deque([1,2,3]) # 在队列尾插入元素 de.append(4) print(de)# deque([1, 2, 3, 4]) # 在队列头插入元素 de.appendleft(5) print(de)# deque([5, 1, 2, 3, 4]) de.pop() print(de)# deque([5, 1, 2, 3]) de.popleft() print(de)# deque([1, 2, 3]) index(ele[, beg, end]) :返回元素ele的第一次出现位置的索引 insert(i, ele) :在i位置插入元素ele remove(ele) :删除第一次出现的ele元素 count(ele) :统计ele元素出现的次数 de = collections.deque([1, 2, 3, 3, 4, 2, 4]) print(de.index(3))# 2 print(de.index(4, 2, 5))# 4 de.insert(4 ,9) print(de)# deque([1, 2, 3, 3, 9, 4, 2, 4]) print(de.count(3))# 2 de.remove(3) for elein de: print(ele)# deque([1, 2, 3, 9, 4, 2, 4]) extend(iterable) :在deque右端插入多个元素 extendleft(iterable) :在deque左端插入多个元素,插入顺序相反 reverse() :反转deque中的元素 rotate() :循环左右移位。负数代表左移;正数代表右移 importcollections de = collections.deque() de.extend([1,2,3]) de.extend([4,5,6]) print(de)# deque([1, 2, 3, 4, 5, 6]) de.extendleft([7,8,9])# eque([9, 8, 7, 1, 2, 3, 4, 5, 6]) de.rotate(-3)# deque([1, 2, 3, 4, 5, 6, 9, 8, 7])左移3个元素 de.reverse()# deque([7, 8, 9, 6, 5, 4, 3, 2, 1])deque文档: https://docs.python.org/3/library/collections.html#collections.deque