Maison  >  Article  >  développement back-end  >  Pourquoi « 1 in [1,0] == True » est-il évalué à False en Python ?

Pourquoi « 1 in [1,0] == True » est-il évalué à False en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-31 21:14:02973parcourir

Why Does `1 in [1,0] == True` Evaluate to False in Python?

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 :

  1. 1 dans [1,0] est évalué à True (comme 1 est membre de la liste [1,0]).
  2. [1,0] == True est évalué ensuite. Contrairement à l'intuition, cette expression renvoie Faux.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn