Question

J'ai ce code:

chars = #some list

try:
    indx = chars.index(chars)
except ValueError:
    #doSomething
else:
   #doSomethingElse

Je veux pouvoir faire cela parce que je n'aime pas causer de manière avisée Exceptions:

chars = #some list

indx = chars.index(chars)

if indx == -1:
    #doSomething
else:
   #doSomethingElse

Y a-t-il un moyen de le faire?

Était-ce utile?

La solution

Notez que cette dernière approche va à l’encontre des "pythoniques" généralement acceptés. philosophie de EAFP, ou "Il est plus facile de demander pardon que de demander une permission." >, tandis que l'ancien le suit.

Autres conseils

if element in mylist:
    index = mylist.index(element)
    # ... do something
else:
    # ... do something else

Dans le cas spécifique où votre liste est une séquence de chaînes à un caractère, vous pouvez obtenir ce que vous voulez en modifiant la liste à rechercher en une chaîne à l'avance (par exemple. '' .join (chars)).

Vous pouvez ensuite utiliser la méthode .find (), qui fonctionne comme vous le souhaitez. Cependant, il n'y a pas de méthode correspondante pour les listes ou les tuples.

Une autre option possible consiste à utiliser un dictionnaire à la place. par exemple.

d = dict((x, loc) for (loc,x) in enumerate(chars))
...
index = d.get(chars_to_find, -1)  # Second argument is default if not found.

Cela peut également donner de meilleurs résultats si vous faites beaucoup de recherches dans la liste. Toutefois, s’il ne s’agit que d’une simple recherche sur une liste à jeter, ce n’est pas la peine de le faire.

scroll top