Opérateurs de chaîne de comparaison : pourquoi 1 sur [1,0] == True est évalué à False
En Python, un résultat surprenant peut se produisent lors de la comparaison du résultat d'un test d'appartenance "in" à True :
<code class="python">1 in [1,0] == True # Unexpectedly returns False</code>
Pour comprendre ce comportement, il est essentiel de reconnaître que Python utilise le chaînage d'opérateurs de comparaison. Cela signifie que plusieurs opérateurs de comparaison dans une expression sont évalués séquentiellement. Dans le cas du code susmentionné, l'expression est interprétée comme :
<code class="python">(1 in [1,0]) == True</code>
En la décomposant davantage :
Le secret derrière [1,0] == Vrai
La raison de ce résultat inattendu réside dans le façon dont Python gère les valeurs booléennes et les comparaisons. Lors de la comparaison d’une liste à une valeur booléenne, Python tente d’abord de convertir la liste en valeur booléenne. Dans le cas de [1,0], cette conversion donne False car une liste non vide est considérée comme True en Python.
La chaîne se déroule
Par conséquent, le l'expression originale se simplifie en :
<code class="python">True == False</code>
qui est évidemment évaluée à False. Cela explique pourquoi 1 sur [1,0] == True renvoie False.
Implications supplémentaires
Ce comportement de chaînage d'opérateurs s'étend également à d'autres opérateurs de comparaison. Par exemple :
<code class="python">a < b < c</code>
se traduit par :
<code class="python">(a < b) and (b < c)</code>
Cela garantit que b n'est évalué qu'une seule fois.
Conclusion
Comprendre le concept de chaînage d'opérateurs de comparaison est crucial pour interpréter le comportement de telles expressions. En reconnaissant que l'ordre d'évaluation est de gauche à droite, nous pouvons anticiper avec précision les résultats et éviter toute confusion.
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!