gpt4 book ai didi

python - 在 collections.deque 中使用切片表示法

转载 作者:IT老高 更新时间:2023-10-28 21:39:57 31 4
gpt4 key购买 nike

如何在不改变以下 deque 的情况下高效、优雅和 Python 地提取项目 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

关于python - 在 collections.deque 中使用切片表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7064289/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com