2016-05-01 13 views
2

Für Liste erhalten wir Index von Elemente bekommen list_name.index(3)collections.deque Index des Elements von Wert

Wie Index des Artikels in deque zu erhalten.

ex: d_list = deque([1, 2, 3, 4]), was der beste Weg ist, den Index des Elements 3.

bearbeiten zu bekommen: Ich verwende Python 2.7.6

Antwort

1

Verwenden Sie sie einfach wie normale Listen:

>>> d_list = collections.deque([1, 2, 3, 4]) 
>>> d_list.index(3) 
2 

Edit: Dies ist nur möglich in Python 3.5 jetzt

3

dienach, wenn Sie Python 3.5 oder besser haben, können Sie index verwenden (gemäß der Antwort von tobspr).

Für ältere Pythons können Sie die deque in eine Liste konvertieren und index dann verwenden:

In [5]: from collections import deque 

In [6]: d_list = deque([1, 2, 3, 4]) 

In [7]: list(d_list).index(3) 
Out[7]: 2 
+0

können wir aus der Warteschlange an einer gewünschten Position zu entfernen? oder können wir nur von *** popleft() *** entfernen? – Madhi

1

Wenn Sie Python 2.x verwenden, deque keine gute Wahl ist, wenn Sie Lookup tun wollen. Sie können entweder list oder gehen Sie wie folgt mit enumerate() verwenden:

>>> def index(element, queue): 
...  for i, ele in enumerate(queue): 
...   if ele == element: 
...    return i 
...  raise ValueError("{} is not in queue".format(element)) 

>>> index(2, deque([1, 2, 3, 4])) 
1 

Alternativ können Sie Ihre eigene Warteschlange implementieren:

>>> class IndexedDeque(deque): 
...  def index(self, element): 
...   for i, ele in enumerate(self): 
...    if ele == element: 
...     return i 
...   raise ValueError("{} is not in queue".format(element))  

>>> d_list = IndexedDeque([1, 2, 3, 4]) 
>>> d_list.index(2) 
1 
Verwandte Themen