Python: Unterschied zwischen! = und "ist nicht"

7

Ich bin unklar über den Unterschied zwischen der Syntax != und is not . Sie scheinen dasselbe zu tun:

%Vor%

Aber wenn ich is not in einem Listenverständnis verwende, erzeugt es ein anderes Ergebnis als wenn ich != verwende.

%Vor%

Warum wurde o in die erste Liste aufgenommen, aber nicht in die zweite Liste?

    
Channel72 25.04.2011, 19:20
quelle

5 Antworten

19

is prüft auf Objektidentität, aber == prüft auf Gleichheit des Objektwerts:

%Vor%     
tkerwin 25.04.2011, 19:23
quelle
6

is not vergleicht Referenzen. == vergleicht Werte

    
c1de0x 25.04.2011 19:25
quelle
1

Je nachdem, wie Sie verwirrt waren, könnte dies hilfreich sein.

Diese Aussagen sind die gleichen:

%Vor%     
Chris 25.04.2011 19:56
quelle
0

Ich zitiere nur aus Referenz, is prüft, ob die Operanden identisch sind und sich wahrscheinlich auf dasselbe Objekt beziehen. wo wie != auf den Wert testet.

%Vor%

Dies ist eine unbestimmte Schleife, weil das Objekt s niemals mit einer Objektreferenz von [] übereinstimmt, sondern sich auf ein völlig anderes Objekt bezieht. Wenn die Bedingung durch s != [] ersetzt wird, wird die Schleife eindeutig, da hier Werte verglichen werden, wenn alle Werte in s ausgelassen werden, bleibt eine leere Liste übrig.

    
saikumarm 25.05.2015 13:04
quelle
-1

Ich möchte hinzufügen, dass sie definitiv nicht das Gleiche machen. Ich würde verwenden! =. Zum Beispiel, wenn Sie eine Unicode-Zeichenfolge haben ....

%Vor%

Mit! = führt Python im Prinzip eine implizite Konvertierung von str () nach unicode () durch und vergleicht sie, während es mit nicht übereinstimmt, wenn es genau dieselbe Instanz ist.

    
std''OrgnlDave 30.06.2016 16:35
quelle