Détails
Trouver l'indice d'un élément dans une liste qui le contient en Python
Pour une liste ["foo" ;, "bar" ;, "baz" ;]
et un élément de la liste "bar"
, comment puis-je obtenir son index (1) en Python ?
2865
3
Référence : Structures de données > Plus de listes
Les avertissements suivent
Notez que même si c'est peut-être la façon la plus propre de répondre à la question telle que posée,
index
est un composant plutôt faible de l'APIlist
, et je ne me souviens pas de la dernière fois où je l'ai utilisé en colère. On m'a fait remarquer dans les commentaires qu'étant donné que cette réponse est fortement référencée, elle devrait être plus complète. Quelques avertissements à propos delist.index
suivent. Cela vaut probablement la peine de jeter un coup d'oeil à la docstring de cette fonction :Complexité temporelle linéaire en fonction de la longueur de la liste
Un appel
index
vérifie chaque élément de la liste dans l'ordre, jusqu'à ce qu'il trouve une correspondance. Si votre liste est longue, et que vous ne savez pas à peu près où dans la liste se trouve la correspondance, cette recherche peut devenir un goulot d'étranglement. Dans ce cas, vous devez envisager une structure de données différente. Notez que si vous savez à peu près où trouver la correspondance, vous pouvez donner un indice àindex
. Par exemple, dans cet extrait,l.index(999_999, 999_990, 1_000_000)
est environ cinq ordres de grandeur plus rapide quel.index(999_999)
direct, parce que le premier n'a à chercher que 10 entrées, alors que le second en cherche un million :Ne retourne que l'index de la première correspondance avec son argument.
Un appel à
index
cherche dans la liste dans l'ordre jusqu'à ce qu'il trouve une correspondance, et s'arrête là. Si vous pensez avoir besoin des indices de plus de correspondances, vous devriez utiliser une compréhension de liste, ou une expression génératrice.La plupart des endroits où j'aurais utilisé
index
, j'utilise maintenant une compréhension de liste ou un générateur d'expression parce qu'ils sont plus généralisables. Donc, si vous envisagez d'utiliserindex
, jetez un coup d'oeil à ces excellentes fonctionnalités de Python.Lance une requête si un élément n'est pas présent dans la liste
Un appel à
index
résulte en uneValueError
si l'élément n'est pas présent.Si l'élément risque de ne pas être présent dans la liste, vous devez soit
item in my_list
(approche propre et lisible), soitindex
dans un bloctry/except
qui attrapeValueError
(probablement plus rapide, au moins quand la liste à rechercher est longue, et que l'élément est habituellement présent.)Une chose qui est vraiment utile pour apprendre Python est d'utiliser la fonction d'aide interactive :
qui vous mènera souvent à la méthode que vous recherchez.
index()
renvoie le premier indice de la valeur !