双端队列deque学习
In [19]: from collections import deque 创建deque对象,并存入0-9 设置最大长度为10,这一旦设置就无法更改 In [20]: dq = deque(range(10),maxlen=10) In [21]: dq Out[21]: deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) dq.rotate(n),队列的旋转,参数n>0,队列最右边n个元素会被移到队列的左边,n<0时,队列左边的n个元素,移动到队列的右边 In [22]: dq.rotate(3) In [23]: dq Out[23]: deque([7, 8, 9, 0, 1, 2, 3, 4, 5, 6]) In [24]: dq.rotate(-4) In [25]: dq Out[25]: deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]) 在队列左边插入元素,因队列长度限制,会把最右边的元素挤出队列 In [26]: dq.appendleft(-1) In [27]: dq Out[27]: deque([-1, 1, 2, 3, 4, 5, 6, 7, 8, 9]) extend(iter),参数为可迭代的列表之类的,在队列的最右边插入元素,把左边多余的元素挤出队列 In [28]: dq.extend([11,22,33])
In [30]: dq
Out[30]: deque([3, 4, 5, 6, 7, 8, 9, 11, 22, 33])
extendleft(iter),在队列的左边插入元素,逆序插入
In [31]: dq.extendleft([55,66,77,88])
In [32]: dq
Out[32]: deque([88, 77, 66, 55, 3, 4, 5, 6, 7, 8])