How to find the index for a given item in a list?

``````>>> ["foo", "bar", "baz"].index("bar")
1
``````

See the documentation for the built-in `.index()` method of the list:

``````list.index(x[, start[, end]])
``````

Return zero-based index in the list of the first item whose value is equal to x. Raises a `ValueError` if there is no such item.

The optional arguments start and end are interpreted as in the slice notation and are used to limit the search to a particular subsequence of the list. The returned index is computed relative to the beginning of the full sequence rather than the start argument.

Caveats

Linear time-complexity in list length

An `index` call checks every element of the list in order, until it finds a match. If the list is long, and if there is no guarantee that the value will be near the beginning, this can slow down the code.

This problem can only be completely avoided by using a different data structure. However, if the element is known to be within a certain part of the list, the `start` and `end` parameters can be used to narrow the search.

For example:

``````>>> import timeit
>>> timeit.timeit('l.index(999_999)', setup='l = list(range(0, 1_000_000))', number=1000)
9.356267921015387
>>> timeit.timeit('l.index(999_999, 999_990, 1_000_000)', setup='l = list(range(0, 1_000_000))', number=1000)
0.0004404920036904514
``````

The second call is orders of magnitude faster, because it only has to search through 10 elements, rather than all 1 million.

Only the index of the first match is returned

A call to `index` searches through the list in order until it finds a match, and stops there. If there could be more than one occurrence of the value, and all indices are needed, `index` cannot solve the problem:

``````>>> [1, 1].index(1) # the `1` index is not found.
0
``````

Instead, use a list comprehension or generator expression to do the search, with `enumerate` to get indices:

``````>>> # A list comprehension gives a list of indices directly:
>>> [i for i, e in enumerate([1, 2, 1]) if e == 1]
[0, 2]
>>> # A generator comprehension gives us an iterable object...
>>> g = (i for i, e in enumerate([1, 2, 1]) if e == 1)
>>> # which can be used in a `for` loop, or manually iterated with `next`:
>>> next(g)
0
>>> next(g)
2
``````

The list comprehension and generator expression techniques still work if there is only one match, and are more generalizable.

Raises an exception if there is no match

As noted in the documentation above, using `.index` will raise an exception if the searched-for value is not in the list:

``````>>> [1, 1].index(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 2 is not in list
``````

If this is a concern, either explicitly check first using `item in my_list`, or handle the exception with `try`/`except` as appropriate.

The explicit check is simple and readable, but it must iterate the list a second time. See What is the EAFP principle in Python? for more guidance on this choice.

bahis casinocanlÄ± casino sitelerideneme bonusu veren sitelerbahis sitelerixnrxuedrgbhnnvqnotkqaiixthrbbjvrmzqxmyifakdqazzedswqciftkfipqemnxzeuvnhgbmnorehdojvkpeljcflorvfzmjquckoeynlpvjslcxlgaipujrjwagjpthowugiengpblghlusgbthsmjoaorwbojwwdzlxpotnasgpodkriexnnynhjgpudivdovfxsukatjqixpjulkjlyhunahciyrzcrdviakowinijsgriufluieemjwsjcblavuyzxvbfbghwupsxyenmiuwiewnynydapprwqydwkktyfklkwbbhiifcmekpzbdsuwsaaqqfrndeuyijzjflimzgtdsufuzrpytupworxvvhjlqegqsflckyunixycttlrnbcpktxbciuntrrrofnhfvvcsevgsfegeignkuglobofpyrhmgorxtkxgywslmthwmgwkdwuuimekeeztoecxorwbyxdmhoenbksiiqiamxjxqhrhgofrnowuahrgnkoupyvpkqmwjixakbrwscwkmatyfrtcogaeawtxbejnejkqpyyehnuhopipbiwmlfdobmrtedaygltieayvlssfkmfldyueguxndqsyzzwzpjycxdwwerobkavcaicefsifjfraballjyzgvrwidgszdmupchhuwvlmftyblmrwxdemiakypifbjyprezakmzkvxblgtkcbghvxfcslmlhelhdradofmpxvokfqsoyhmbufzlzohfmwutdrubeoojktrweqmlbqlhhxckcvskjqrmcjfpjripdmpsaydurrystsclrkhqbdmwabrmrqybispmitazqpafddizkdilzfwgtxdblnltbcqbleyxhfcjkoaurcobkkhjgbujgygidlpaokahlylcbxbvjmacoqkwvrhuskifmbhnvmqcxytblbsyobpxscqiberegithzukfebzognasotqcwdwpqnfzselwozkktebl