Heim > Artikel > Backend-Entwicklung > Warum funktioniert „nicht in“ mit Tupeln in Python nicht wie erwartet?
Überprüfen der Abwesenheit von Elementen in einer Liste mit Python
In Python kann die Überprüfung, ob ein Element in einer Liste nicht vorhanden ist, durch erreicht werden „nicht in“-Operator. Bei der Arbeit mit Listen von Tupeln tritt jedoch eine häufige Gefahr auf.
Anfänglicher Code:
Im bereitgestellten Code:
if curr_x -1 > 0 and (curr_x-1 , curr_y) not in myList: # Do Something
Der Programmierer beabsichtigt, den „if“-Zweig nur dann auszuführen, wenn das spezifische Tupel (curr_x-1, curr_y) nicht in der myList enthalten ist. Der Code scheint jedoch nicht richtig zu funktionieren.
Ursache des Problems:
Das Problem ist nicht auf den logischen Ausdruck (curr_x-1, curr_y) zurückzuführen, der nicht in myList enthalten ist . Dieser Ausdruck wird korrekt als „True“ ausgewertet, wenn das Tupel in der Liste fehlt, und als „False“, wenn es vorhanden ist, wie in den folgenden Beispielen gezeigt:
>>> 3 not in [2, 3, 4] False >>> 3 not in [4, 5, 6] True
Tupel vs. Listen:
Der Fehler liegt wahrscheinlich an einer anderen Stelle im Code. Im Gegensatz zu Listen sind Tupel in Python unveränderlich. Dies bedeutet, dass ein einmal erstelltes Tupel nicht mehr geändert werden kann. Wenn Sie versuchen, es zu ändern, wird ein TypeError ausgelöst, der den Betrieb des „Not In“-Operators stören kann.
Lösung:
Um jegliches Potenzial zu vermeiden Stellen Sie bei Problemen sicher, dass die Tupel in der Liste und das, auf dessen Abwesenheit Sie prüfen, im gesamten Code unverändert bleiben. Wenn sie geändert werden müssen, sollten Sie die Verwendung von Listen anstelle von Tupeln in Betracht ziehen.
Das obige ist der detaillierte Inhalt vonWarum funktioniert „nicht in“ mit Tupeln in Python nicht wie erwartet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!