Heim > Backend-Entwicklung > Python-Tutorial > 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
Freigeben: 2024-10-31 21:14:02
Original
1001 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

übersetzt:

<code class="python">(a < b) and (b < c)</code>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage