如何在不删除deque的情况下获取deque的第一个值?

问题描述 投票:2回答:1

我使用Python 3.6.1并且由于其方便性,我经常使用集合中的deque()。这一次,我需要得到一个双端队列的第一个值,并想知道它是否可能。

问题是我可以使用.popleft()来做到这一点,但它最终会同时删除该值。我想到了list(deque01)[0],但我担心当deque01很大或者获得第一个值的过程重复多次时,它是否会消耗太多资源。是否有任何方法或技巧可以有效地做到这一点?

python deque
1个回答
11
投票

对于deque数据结构,这通常称为“窥视”操作,而在Python中,它只是使用通常的数据模型的__getitem__ dunder实现。

以下示例直接来自docs

>>> from collections import deque
>>> d = deque('ghi')                 # make a new deque with three items
>>> d[0]                             # peek at leftmost item
'g'
>>> d[-1]                            # peek at rightmost item
'i'

请注意,即使界面看起来与列表类似,但是deques只能在最左边或最右边的项目中快速访问。在中间访问数据的速度较慢,而不是列表,在任何地方都可以快速索引数据。

© www.soinside.com 2019 - 2024. All rights reserved.