双端队列的前n个元素

时间:2018-11-01 01:54:11

标签: python

我如何首先获得出队的n个元素,然后获得出队的n + 1至2n个元素,依此类推。

我知道如何在列表上进行操作,但是使用相同的方法,我得到了:

from collections import deque
d = deque('ghi')
print d[:2]

我得到了以下内容:

$python main.py
deque(['g', 'h', 'i'])
3
Traceback (most recent call last):
  File "main.py", line 7, in <module>
    a = d[:2]
TypeError: sequence index must be integer, not 'slice'

2 个答案:

答案 0 :(得分:1)

您可以使用itertools

from collections import deque
import itertools

d = deque('ghi')
print (list(itertools.islice(d, 1, 3)))

# output,
['h', 'i']

或者如果要打印为字符串,

print (''.join(itertools.islice(d, 1, 3)))

#output,
hi

答案 1 :(得分:0)

尝试itertools.islice()

 deque_slice = collections.deque(itertools.islice(d, 0, 2))

请注意,您不能对islice使用负索引或步进值。

更多详细信息here