Heim > Artikel > Backend-Entwicklung > Warum wird „1 in [1,0] == True“ in Python als „Falsch“ ausgewertet?
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:
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!