详细分析python 中的deque 以及和list 的用法区别

dqque :双端队列,可以快速的从另外一侧追加和推出对象,deque是一个双向链表,针对list连续的数据结构插入和删除进行优化。它提供了两端都可以操作的序列,这表示在序列的前后你都可以执行添加或删除操作。

详细分析python 中的deque 以及和list 的用法区别_第1张图片

通过上图可以看出,deque 需要两个参数,iterable.可迭代对象;maxlen:个数

我现在有一个需求,要求有一个数组,长度为5 ,每次都更新插入,将旧的删除。接下来对比一下,采用deque 和list 两种方式:

from collections import deque

import time

# 采用双向队列,采用.append()插入,会自动将最左边的的删除

time0 = time.time()

# 初始化due

dq = deque([1,2,3,4,5],maxlen=5)

print(dq)

dq.append(6)

print(dq)

time1 = time.time()

print('deque插入所用时间',time1-time0)

#------------采用列表方式,先append 插入,在使用.pop(0)删除-----------------

list = [1,2,3,4,5]

list.append(6)

list.pop(0)

print(list)

time2 = time.time()

print('list插入所用时间',time2-time1)

# 结果输出

deque([1, 2, 3, 4, 5], maxlen=5)
deque([2, 3, 4, 5, 6], maxlen=5)
deque插入所用时间 0.0002040863037109375
[2, 3, 4, 5, 6]
list插入所用时间 0.0014698505401611328

我们发现,使用deque 的方式不仅代码量减少,而且所用时间也比list的方式要高效。

你可能感兴趣的:(python,开发语言)