在 python 文档中,我可以看到 deque 是一个特殊的集合,它为从左侧或右侧弹出/添加项目进行了高度优化。例如,文件显示:
Deques 是堆栈和队列的概括(名称为 发音为“ deck”,是“双端队列”的简称) 支持线程安全,内存高效的附加和弹出 具有大致相同的 O (1)性能的倾斜侧 任何一个方向。
虽然列表对象支持类似的操作,但它们针对 快速的固定长度的操作,并产生 O (n)记忆体的移动成本 弹出(0)和插入(0,v)操作,这些操作同时改变大小和 基础数据表示的位置。
我决定用 巨蟒做一些比较。有人能解释一下我在这里做错了什么吗:
In [31]: %timeit range(1, 10000).pop(0)
10000 loops, best of 3: 114 us per loop
In [32]: %timeit deque(xrange(1, 10000)).pop()
10000 loops, best of 3: 181 us per loop
In [33]: %timeit deque(range(1, 10000)).pop()
1000 loops, best of 3: 243 us per loop