morris aka the moose en décompensation maniaque | rufo a écrit :
Ca serait pas une question de priorité des opérateurs du genre :
if (x in z) and (y in z)
if (x) and (y in z)
|
masklinn a écrit :
Correct. La première expression vérifie que x est dans z et y est dans z, la seconde vérifie que x (est "truthy", et que y est dans z (mais pas que x est dans z).
Nota bene: (x and y) in z ne va pas non plus vérifier que `x in z and y in z`, c'est pas comme ça que ça marche (si `x` est truthy ça va vérifier que `x in z`, sinon ça va vérifier que `y in z`, mais jamais les deux)
|
czh a écrit :
La première expression "if X in Z and Y in Z" est une expression booléenne.
Dans un monde, où la deuxième expression "if X and Y in Z" serait équivalente à la première expression, il s'agirait de la représentation d'une expression ensembliste.
Les opérateurs or et and sont opérateurs booléens, on ne peut pas les utiliser comme des opérateurs ensemblistes. Et donc la deuxième expression se comporte comme une expression booléenne. (Les posts ci-dessus expliquent très bien comment est interprété cette expression donc je ne vais pas revenir dessus.)
Pour écrire des expressions ensemblistes, il faudrait que le langage puisse utiliser des opérateurs ensemblistes qui serait probablement nommé union et intersect ce qui donnerait probablement un truc du genre "if (X union Y) in Z". Ou que le langage soit capable : soit de distinguer à la volée les 2 types d'expressions pour y appliquer les bons opérateurs, soit d'avoir des marqueurs implictes à cet usage du genre "ifensemblist X and Y in Z".
in est un opérateur ensembliste, il s'agit d'un include.
edit: apparemment, python a une syntaxe ensembliste : https://docs.python.org/2/library/stdtypes.html#set
Et donc il suffit d'utiliser union (|) à la place de and et utiliser issuperset pour vérifier si l'ensemble complet est inclus dans l'autre.
Un truc du genre "if (x|y).issuperset(z)".
|
merci à tous les trois pour ces réponses claires, et mention spéciale à czh pour explication fondamentale :-)
J'ai appris un truc important.
---------------
"La chance de voir une biche" Archlinux :: http://www.archlinux.org/ ::
|