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']