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

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

通过上图可以看出,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的方式要高效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值