web-dev-qa-db-ja.com

dequeを削除せずに最初の値を取得するにはどうすればよいですか?

私はPython 3.6.1を使用し、その利便性のためにコレクションからdeque()を頻繁に使用します。今回は、dequeの最初の値を取得する必要があり、それが可能かどうか疑問に思います。

問題は、.popleft()を使用してそれを実行できることですが、同時に値が削除されることになります。 list(deque01)[0]を考えましたが、deque01が大きい場合や、最初の値を取得するプロセスが何度も繰り返される場合に、リソースを大量に消費するのではないかと心配しています。これを効果的に行う方法やコツはありますか?

7
maynull

dequeデータ構造の場合、これは通常「ピーク」操作と呼ばれ、Pythonでは、通常のデータモデルの __getitem__ ダンダー。

以下のこの例は、 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'

インターフェイスはリストに似ていますが、両端キューは左端または右端のアイテムにのみ高速アクセスを提供していることに注意してください。どこにでもインデックスを付けるのが速いリストとは対照的に、途中でデータにアクセスするのは遅くなります。

20
wim