Python-deque
list 的底层是数组(array),能胜任 stack 的角色,但其在前端的 pop(或 insert)的操作时间都是线性级的,其最大的时间空间消耗出现在存储元素增长超过当前数组分配的大小时,所有元素都必须移动到新的位置,尤其对于头部的插入与删除
如果需要频繁对两端进行增删,可考虑使用 collections.deque
- deque 类的实现是一个块空间的双向链表,其中每个独立元素都是一个数组。提供了两端都可操作的序列
双向增删操作
- append(元素)
appendleft(元素) - extend(list)
extendleft(list) - pop()
popleft()
from collections import deque
d=deque()
d.append(3)
d.append(8)
d.append(1)
d=deque([3, 8, 1])
from collections import deque
d=deque([1,2,3,4,5])
d.extendleft([6,7,8])
d=deque([8, 7, 6, 1, 2, 3, 4, 5])
限制deque长度
from collections import deque
d=deque(maxlen=20)
for i in range(30):
d.append(str(i))
d=deque(['10',
'11',
'12',
'13',
'14',
'15',
'16',
'17',
'18',
'19',
'20',
'21',
'22',
'23',
'24',
'25',
'26',
'27',
'28',
'29'])
#当限制长度的deque增加超过限制数的项时,另一边的项会自动删除