2016-05-01 64 views
2

collections.deque獲得元素的索引列表對於我們可以得到元素list_name.index(3)通過價值

如何獲得項目的指標在雙端隊列的指數。

例如: d_list = deque([1, 2, 3, 4])什麼是讓元素的索引的最佳方法3.

編輯: 我使用Python 2.7.6

回答

1

只是用它像普通的列表:

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

編輯︰這是目前只能在Python 3.5中可能

3

根據pythons docs,如果您有python3.5或更高版本,則可以使用index(根據tobspr的回答)。

對於年齡較大的蟒蛇,你可以將雙端隊列轉換到一個列表,然後使用index

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

我們可以從所需位置隊列中刪除?或者我們只能從*** popleft()***中刪除? – Madhi

1

如果您正在使用Python 2.x中,如果你想要做的查找deque是不是一個好的選擇。您可以使用list還是做使用enumerate()如下:

>>> 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 

或者,您也可以實現自己的隊列:

>>> 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