5 votes

Vérifiez si un élément est égal à l'un des nombreux éléments en Python

Je veux vérifier si un élément d'une liste est égal à l'un des éléments d'un ensemble donné de n éléments, si oui, faire quelque chose.

Par exemple, la façon la plus intuitive mais bien sûr fastidieuse et laide est la suivante :

for item in List:
    if (item == element1) or (item == element2) or ... or (item == elementn):
        faire quelque chose

Quelles sont les meilleures façons de vérifier ?

9voto

Duncan Points 25356

Vous utilisez l'opérateur in:

elements = set((element1, element2, ..., elementn))
...
if item in elements:
   faites quelque chose

Utilisez soit un ensemble (set) soit un tuple pour les éléments: un ensemble est plus rapide pour les recherches mais nécessite que les éléments soient hashables. Un tuple est plus léger pour quelques éléments mais devient plus lent s'il y a plus que quelques éléments.

De plus, sauf si les éléments varient à travers votre boucle, vous devriez initialiser la collection en dehors de la boucle pour éviter les frais généraux de créer le set/tuple à chaque fois.

4voto

Sven Marnach Points 133943
pour élément in ma_liste:
    si élément dans (élément1, élément2, ..., élémentn):
        # faire quelque chose

Si l'ordre et la fréquence des éléments dans ma_liste n'ont pas d'importance, vous pouvez également utiliser

pour élément in set(ma_liste) & set((élément1, élément2, ..., élémentn)):
    # faire quelque chose

1voto

lc2817 Points 2274

Vous pouvez simplement faire si élément dans liste2: faire quelque chose avec list2 correctement initialisé avec les éléments que vous voulez faire correspondre.

Prograide.com

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.

Powered by:

X