collections.deque按值获取元素的索引

时间:2016-05-01 08:10:12

标签: python python-2.7 deque

对于列表,我们可以得到元素list_name.index(3)的索引

如何在deque中获取项目索引。

例如: d_list = deque([1, 2, 3, 4])获取元素3索引的最佳方法是什么。

编辑: 我使用的是Python 2.7.6

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

只需像常规列表一样使用它:

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

编辑:这只能在Python 3.5中使用

答案 2 :(得分: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