Heim  >  Artikel  >  Backend-Entwicklung  >  Warum wird „1 in [1,0] == True“ in Python als „Falsch“ ausgewertet?

Warum wird „1 in [1,0] == True“ in Python als „Falsch“ ausgewertet?

Linda Hamilton
Linda HamiltonOriginal
2024-10-31 21:14:02865Durchsuche

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

Kette von Vergleichsoperatoren: Warum 1 in [1,0] == True als False ausgewertet wird

In Python kann ein überraschendes Ergebnis auftreten entstehen, wenn das Ergebnis eines „in“-Mitgliedschaftstests mit True verglichen wird:

<code class="python">1 in [1,0] == True  # Unexpectedly returns False</code>

Um dieses Verhalten zu verstehen, ist es wichtig zu erkennen, dass Python die Verkettung von Vergleichsoperatoren verwendet. Das bedeutet, dass mehrere Vergleichsoperatoren in einem Ausdruck nacheinander ausgewertet werden. Im Fall des oben genannten Codes wird der Ausdruck wie folgt interpretiert:

<code class="python">(1 in [1,0]) == True</code>

Weitere Aufschlüsselung:

  1. 1 in [1,0] ergibt True (als 1). ist Mitglied der Liste [1,0]).
  2. [1,0] == True wird als nächstes ausgewertet. Entgegen der Intuition gibt dieser Ausdruck False zurück.

Das Geheimnis hinter [1,0] == True

Der Grund für dieses unerwartete Ergebnis liegt in der Art und Weise, wie Python mit booleschen Werten und Vergleichen umgeht. Beim Vergleich einer Liste mit einem booleschen Wert versucht Python zunächst, die Liste in einen booleschen Wert umzuwandeln. Im Fall von [1,0] ergibt diese Konvertierung False, da eine nicht leere Liste in Python als True gilt.

Die Kette entfaltet sich

Daher ist die Der ursprüngliche Ausdruck vereinfacht sich zu:

<code class="python">True == False</code>

was offensichtlich als Falsch ausgewertet wird. Dies erklärt, warum 1 in [1,0] == True False zurückgibt.

Zusätzliche Implikationen

Dieses Operatorverkettungsverhalten gilt auch für andere Vergleichsoperatoren. Zum Beispiel:

<code class="python">a < b < c</code>

übersetzt:

<code class="python">(a < b) and (b < c)</code>

Dadurch wird sichergestellt, dass b nur einmal ausgewertet wird.

Schlussfolgerung

Das Verständnis des Konzepts der Vergleichsoperatorverkettung ist entscheidend für die Interpretation des Verhaltens solcher Ausdrücke. Indem wir erkennen, dass die Reihenfolge der Auswertung von links nach rechts erfolgt, können wir die Ergebnisse genau vorhersehen und Verwirrung vermeiden.

Das obige ist der detaillierte Inhalt vonWarum wird „1 in [1,0] == True“ in Python als „Falsch“ ausgewertet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn