111 votes

Existe-t-il une manière plus élégante d'exprimer ((x == a et y == b) ou (x == b et y == a)) ?

J'essaie d'évaluer ((x == a and y == b) or (x == b and y == a)) en Python, mais cela semble un peu verbeux. Existe-t-il un moyen plus élégant ?

155voto

Dani Mesejo Points 29634

Si les éléments sont hachables, vous pouvez utiliser des ensembles :

 {a, b} == {y, x}

32voto

Thomas Points 63635

Les tuples le rendent légèrement plus lisible :

 (x, y) == (a, b) or (x, y) == (b, a)

Cela donne un indice : nous vérifions si la séquence x, y est égale à la séquence a, b mais en ignorant l'ordre. C'est juste mettre l'égalité!

 {x, y} == {a, b}

27voto

Wagner Macedo Points 596

La façon la plus élégante, à mon avis, serait

 (x, y) in ((a, b), (b, a))

C'est un meilleur moyen que d'utiliser des ensembles, c'est-à-dire {a, b} == {y, x} , comme indiqué dans d'autres réponses, car nous n'avons pas besoin de penser si les variables sont hachables.

26voto

jasonharper Points 7387

Si les éléments ne peuvent pas être hachés, mais prennent en charge les comparaisons de commandes, vous pouvez essayer :

 sorted((x, y)) == sorted((a, b))

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