Python的deque, 堆栈的一种泛化数据结构

140 阅读1分钟

collections.deque()

实现方式为双指针,是queue和stack的generalization, 可以实现从O(1)的popleft. 而list的pop(0)时间复杂度为O(N)

from collections import deque
que = deque([1,2,3])
print("origin: ", list(que))
que.append(4)
print("append: ", list(que))
que.appendleft(5)
print("appendLeft: ", list(que))
que.pop()
print("pop: ",list(que))
que.popleft()
print("popleft: ", list(que))
print("indices:(que[0], que[1]) ", que[0],que[-1])

print("reversed: ", list(reversed(que)))
que.extend(('a','b','c'))
print("extend: ", list(que))
que.rotate(2)
print("rotated:",list(que))

输出:

origin:  [1, 2, 3]
append:  [1, 2, 3, 4]
appendLeft:  [5, 1, 2, 3, 4]
pop:  [5, 1, 2, 3]
popleft:  [1, 2, 3]
indices:(que[0], que[1])  1 3
reversed:  [3, 2, 1]
extend:  [1, 2, 3, 'a', 'b', 'c']
rotated: ['b', 'c', 1, 2, 3, 'a']