查找包含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?