查找包含Python的列表中的项目索引
对于列表["foo", "bar", "baz"]
和列表"bar"
的项目,在Python中获取索引(1)的最简单方法是什么?
>>> ["foo", "bar", "baz"].index("bar")
1
参考:数据结构>更多关于列表
有一点对学习Python非常有帮助,那就是使用交互式帮助功能:
>>> help(["foo", "bar", "baz"])
Help on list object:
class list(object)
...
|
| index(...)
| L.index(value, [start, [stop]]) -> integer -- return first index of value
|
这往往会引导你找到你正在寻找的方法。
大多数答案解释了如何找到单个索引 ,但是如果项目在列表中多次出现,它们的方法不会返回多个索引。 使用enumerate()
:
for i, j in enumerate(['foo', 'bar', 'baz']):
if j == 'bar':
print(i)
index()
函数仅返回第一次出现,而enumerate()
返回所有出现次数。
作为列表理解:
[i for i, j in enumerate(['foo', 'bar', 'baz']) if j == 'bar']
这也是itertools.count()
另一个小解决方案itertools.count()
与枚举几乎相同):
from itertools import izip as zip, count # izip for maximum efficiency
[i for i, j in zip(count(), ['foo', 'bar', 'baz']) if j == 'bar']
与使用enumerate()
相比,这对于更大的列表更有效:
$ python -m timeit -s "from itertools import izip as zip, count" "[i for i, j in zip(count(), ['foo', 'bar', 'baz']*500) if j == 'bar']"
10000 loops, best of 3: 174 usec per loop
$ python -m timeit "[i for i, j in enumerate(['foo', 'bar', 'baz']*500) if j == 'bar']"
10000 loops, best of 3: 196 usec per loop
链接地址: http://www.djcxy.com/p/733.html
上一篇: Finding the index of an item given a list containing it in Python
下一篇: How do I give text or an image a transparent background using CSS?