Maison > développement back-end > Tutoriel Python > 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
Libérer: 2024-10-31 21:14:02
original
1001 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

se traduit par :

<code class="python">(a < b) and (b < c)</code>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal