对集合使用切片表示法。deque

本教程将介绍对集合使用切片表示法。deque的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

对集合使用切片表示法。deque 教程 第1张

问题描述

怎么高效、优雅、典雅地从以下deque中提取项目3..6而不对其进行更改:

from collections import deque
q = deque('',maxlen=10)
for i in range(10,20):
 q.append(i)

slice notation似乎不适用于deque...

推荐答案

import itertools
output = list(itertools.islice(q, 3, 7))

例如:

>>> import collections, itertools
>>> q = collections.deque(xrange(10, 20))
>>> q
deque([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
>>> list(itertools.islice(q, 3, 7))
[13, 14, 15, 16]

这应该比到目前为止发布的其他解决方案更有效。证据?

[me@home]$ SETUP="import itertools,collections; q=collections.deque(xrange(1000000))"

[me@home]$ python -m timeit  "$SETUP" "list(itertools.islice(q, 10000, 20000))"
10 loops, best of 3: 68 msec per loop

[me@home]$ python -m timeit "$SETUP" "[q[i] for i in  xrange(10000, 20000)]"
10 loops, best of 3: 98.4 msec per loop

[me@home]$ python -m timeit "$SETUP" "list(q)[10000:20000]"
10 loops, best of 3: 107 msec per loop

好了关于对集合使用切片表示法。deque的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。