Heim  >  Artikel  >  Backend-Entwicklung  >  Warum funktioniert „nicht in“ mit Tupeln in Python nicht wie erwartet?

Warum funktioniert „nicht in“ mit Tupeln in Python nicht wie erwartet?

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 09:20:03375Durchsuche

Why Doesn't

Ü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!

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