Encontrar el índice de un elemento dada una lista que lo contiene en Python
Para una lista ["foo", "bar", "baz"]
y un elemento de la lista `"bar", ¿cómo obtengo su índice (1) en Python?
2865
3
Para una lista ["foo", "bar", "baz"]
y un elemento de la lista `"bar", ¿cómo obtengo su índice (1) en Python?
Referencia: Estructuras de datos > Más sobre listas
Las advertencias siguen
Ten en cuenta que, aunque esta es quizás la forma más limpia de responder a la pregunta tal y como se ha formulado,
index
es un componente bastante débil de la API delistas
, y no recuerdo la última vez que lo usé con rabia. Me han señalado en los comentarios que, dado que esta respuesta está muy referenciada, debería ser más completa. Siguen algunas advertencias sobrelist.index
. Probablemente merezca la pena echar un vistazo al docstring de la misma:Complejidad temporal lineal en la longitud de la lista
Una llamada a
index
comprueba cada elemento de la lista en orden, hasta que encuentra una coincidencia. Si tu lista es larga, y no sabes aproximadamente en qué parte de la lista ocurre, esta búsqueda podría convertirse en un cuello de botella. En ese caso, debería considerar una estructura de datos diferente. Tenga en cuenta que si sabe más o menos dónde encontrar la coincidencia, puede dar aindex
una pista. Por ejemplo, en este fragmento,l.index(999_999, 999_990, 1_000_000)
es aproximadamente cinco órdenes de magnitud más rápido quel.index(999_999)
, porque el primero sólo tiene que buscar en 10 entradas, mientras que el segundo busca en un millón:Sólo devuelve el índice de la primera coincidencia con su argumento
Una llamada a
index
busca a través de la lista en orden hasta que encuentra una coincidencia, y se detiene allí. Si espera necesitar índices de más coincidencias, debe utilizar una comprensión de lista, o una expresión generadora.La mayoría de los lugares donde una vez habría utilizado
index
, ahora uso una comprensión de lista o expresión generadora porque son más generalizables. Así que si estás considerando usarindex
, echa un vistazo a estas excelentes características de python.Lanza si el elemento no está presente en la lista
Una llamada a
index
resulta en unValueError
si el elemento no está presente.Si el elemento puede no estar presente en la lista, debe
item in my_list
(enfoque limpio y legible), oindex
en un bloquetry/except
que captureValueError
(probablemente más rápido, al menos cuando la lista a buscar es larga, y el elemento suele estar presente).Una cosa que es realmente útil en el aprendizaje de Python es utilizar la función de ayuda interactiva:
que a menudo te llevará al método que estás buscando.
¡
index()
devuelve el primer índice del valor!