Maison >développement back-end >Tutoriel Python >Comment fonctionnent les fonctions « any » et « all » de Python et pourquoi ma comparaison de tuples a-t-elle échoué ?
Comprendre le comportement de toutes les fonctions de Python
Toutes les fonctions de Python fournissent des moyens pratiques d'évaluer la véracité de plusieurs éléments au sein d'un itérable . any renvoie True si un élément est True, tandis que all renvoie True uniquement si tous les éléments sont True.
any vs. all
Intuitivement, any peut être visualisé comme un série d'opérateurs logiques OU (||), et le tout comme une série d'opérateurs logiques ET (&&). Cette compréhension permet de clarifier leur fonctionnalité :
Court-circuit
Un aspect important de tout et de tous est leur comportement de court-circuit. Ils évaluent les éléments séquentiellement jusqu'à ce qu'ils puissent déterminer le résultat. Cette optimisation évite un parcours inutile de l'ensemble de l'itérable.
Application dans l'exemple donné
Dans l'exemple fourni, nous visons à comparer des tuples pour déterminer si une valeur diffère et imprimez True dans ce cas. Le résultat attendu doit être [False, True, False]. Cependant, le résultat réel obtenu est [Faux, Faux, Faux]. Cet écart provient de l'expression utilisée :
[any(x) and not all(x) for x in zip(*d['Drd2'])]
L'expression entre parenthèses est évaluée à True uniquement si au moins un élément du tuple est True mais que tous les éléments ne sont pas True. Dans le cas fourni, aucun des tuples ne contient de telles valeurs. Par conséquent, le résultat est incorrectement [Faux, Faux, Faux].
Mise en œuvre correcte
Pour obtenir le comportement souhaité, on pourrait utiliser l'expression suivante à la place :
[x[0] != x[1] for x in zip(*d['Drd2'])]
Cette expression compare directement le premier et le deuxième élément de chaque tuple, renvoyant True s'ils diffèrent. En conséquence, le résultat souhaité de [False, True, False] serait obtenu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!