Tut dies, was ich denke, dass es tut? Es scheint mir ja. Ich bitte um Gewissheit.Testen der Gleichheit der drei Werte
if n[i] == n[i+1] == n[i+2]:
return True
Sind diese gleich?
if n[i] == n[i+1] and n[i+1] == n[i+2]:
return True
Tut dies, was ich denke, dass es tut? Es scheint mir ja. Ich bitte um Gewissheit.Testen der Gleichheit der drei Werte
if n[i] == n[i+1] == n[i+2]:
return True
Sind diese gleich?
if n[i] == n[i+1] and n[i+1] == n[i+2]:
return True
Es ist Äquivalent, aber nicht gleich, da Zugriffe nur einmal durchgeführt werden. Python Ketten relationalen Operatoren natürlich (einschließlich in
und is
).
Der einfachste Weg, um den kleinen Unterschied zu zeigen:
>>> print(1) == print(2) == print(3)
1
2
3
True
>>> print(1) == print(2) and print(2) == print(3)
1
2
2
3
True
Es ist erwähnenswert, sie sind nicht das gleiche, wie es möglich ist, ein zu ersinnen Szenario, in dem einer arbeitet und der andere fehlschlägt ('n' ist ein Objekt, das den Wert von' n [i + 1] 'nach einem Zugriff ändert). Edit: Ich habe in einem Beispiel den Unterschied editiert. –
ja Sie richtig sind ....
Sie auch
5 > x > 1
oder
tun können1 < x < 5
Ja, allerdings beim Vergleich ns sind verkettet der gemeinsame Ausdruck wird einmal ausgewertet, wenn and
es zweimal ausgewertet wird. In beiden Fällen wird der zweite Vergleich nicht, wenn der erste, der falsch ist, zB aus dem docs bewertet:
Vergleiche können beliebig verkettet werden, beispielsweise < x y < = z entspricht bis x < y und y < = z, außer dass y nur einmal ausgewertet wird (aber in beiden Fällen wird z überhaupt nicht ausgewertet, wenn x < y für falsch befunden wird).
Yep, bei der Interna Python die Vergleichsoperatoren kehrt noch wahr weder falsch, kehren sie stattdessen das Objekt ‚Vergleichsergebnis‘ (kann den Klassennamen nicht mehr erinnern, es war ganz in Vergangenheit), und diese Aufgabe stellt die _ lt _, _ gt _, _ eq _ etc etc Methoden und für das Endergebnis 'verantwortlich' werden (und die 'Vergleichsergebnis' wirft auf Wahr oder Falsch am Ende der Erklärung). Das ist eine Magie der semantischen Kontrolle, die Python Ihnen bietet :)
Das ist richtig. –
Duplizieren von: http://stackoverflow.com/questions/13792604/usage-of-the-operator-for-three-objects/13792615#13792615 –