Quelle est une bonne façon de trouver l'indice d'un élément dans une liste en Python ?
Notez que la liste peut ne pas être triée.
Existe-t-il un moyen de spécifier l'opérateur de comparaison à utiliser ?
Quelle est une bonne façon de trouver l'indice d'un élément dans une liste en Python ?
Notez que la liste peut ne pas être triée.
Existe-t-il un moyen de spécifier l'opérateur de comparaison à utiliser ?
De Plongez dans Python :
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
>>> li.index("example")
5
Mais ce code donne une erreur lorsque l'élément n'est pas dans la liste. Dans le contexte de l'exemple actuel, si je recherche 'trois' (c.-à-d. : li.index('trois')) donne une erreur.
Vous pouvez attraper l'erreur pour détecter quand quelque chose n'est pas dans la liste. try: li.index("three") except ValueError: found = false
Le meilleur moyen est probablement d'utiliser le méthode de liste .index .
Pour les objets de la liste, vous pouvez faire quelque chose comme :
def __eq__(self, other):
return self.Value == other.Value
avec tout traitement spécial dont vous avez besoin.
Vous pouvez également utiliser une instruction for/in avec enumerate(arr)
Exemple de recherche de l'indice d'un élément dont la valeur est > 100.
for index, item in enumerate(arr):
if item > 100:
return index, item
Voici une autre façon d'utiliser la compréhension de liste (certaines personnes pourraient trouver cela discutable). Elle est très abordable pour des tests simples, par exemple des comparaisons sur des attributs d'objets (dont j'ai souvent besoin) :
el = [x for x in mylist if x.attr == "foo"][0]
Bien sûr, cela suppose l'existence (et, en fait, l'unicité) d'un élément approprié dans la liste.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
Je peux désélectionner cette question comme étant dupliquée, les questions et réponses ne gèrent pas le cas des instances de classe qui correspondent à un critère.
0 votes
De même, trouver l'index d'un élément dans une liste n'est pas la même chose que trouver l'élément dans une liste.