2017-09-21 4 views
1

私はPython 3.6.1を使用していますが、コレクションの便利さのためにかなり頻繁にコレクションからdeque()を使用しています。今回は、両端キューの最初の値を取得し、それが可能かどうか疑問に思う必要があります。デキューを削除せずにデキューの最初の値を取得するにはどうすればよいですか?

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

+3

ちょうど 'deque01 [0]'? –

+0

@Yakym Pirozhenkoありがとうございました!私もそれを試してみたが、うまくいかなかったと思ったが、実際にはうまくいった!良い一日を過ごしてください! – maynull

答えて

4

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' 

注意インターフェースはリストに似ていても、dequeのが唯一の左端または右端の項目で高速なアクセスを与えていること。どこでもインデックスを作成するのが速いリストではなく、真ん中のデータにアクセスする方が時間がかかります。

関連する問題