[入门]——数据结构——双向队列
双向队列 collections.deque
通过列表实现队列时, 在删除头部元素pop(0)
很耗时, 这牵扯了元素的移动(即以为删除法)。
collections.deque
类(双向队列)是一个线程安全, 可以快速从连段删除添加元素的数据类型。
collections.deque([*iterable*[, *maxlen*]])
如果 maxlen 没有指定或者是 None
,deques 可以增长到任意长度。否则,deque就限定到指定最大长度。一旦限定长度的deque满了,当新项加入时,同样数量的项就从另一端弹出。
方法 | 作用 | 会不会引发异常 |
---|---|---|
append(x) | 添加 x 到右端。 | |
appendleft(x) | 添加 x 到左端 | |
pop() | 不加参数删除最右端 | 没有会引发异常 |
popleft() | 不加参数删除最多断。 | 没有会引发异常 |
rotate(n=1) | 向右循环移动 n 步。 如果 n 是负数,就向左循环。 | |
extend(iterable) | 从右侧扩展扩展,通过添加iterable参数中的元素 | |
extendleft(iterable) | 从左侧扩展扩展,通过添加iterable参数中的元素 | |
clear() | 清空队列 | |
count(x) | 计算 deque 中元素等于 x 的个数。 |
代码示例