2016-05-01 2 views

ответ

1

Просто использовать его как обычные списки:

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

Редактировать: Это возможно только в Python 3.5 прямо сейчас

3

Согласно pythons docs, если у вас есть python3.5 или выше, вы можете использовать index (согласно ответу tobspr).

Для старших питонов, вы можете преобразовать Deque в список, а затем использовать 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 
Смежные вопросы