Tupel werden Position für Position verglichen: Der erste Gegenstand des ersten Tupels wird mit dem ersten Gegenstand des zweiten Tupels verglichen; Wenn sie nicht gleich sind (dh der erste ist größer oder kleiner als der zweite), ist dies das Ergebnis des Vergleichs, andernfalls wird der zweite Punkt berücksichtigt, dann der dritte und so weiter.
Siehe Allgemeine Sequenzoperationen :
Sequenzen des gleichen Typs unterstützen auch Vergleiche. Insbesondere werden Tupel und Listen lexikographisch verglichen, indem entsprechende Elemente verglichen werden. Dies bedeutet, dass zum Vergleichen gleich jedes Element gleich vergleichen muss und die beiden Sequenzen vom gleichen Typ sein und die gleiche Länge haben müssen.
Auch Wertvergleiche für weitere Details:
Der lexikografische Vergleich zwischen integrierten Sammlungen funktioniert wie folgt:
- Damit zwei Sammlungen gleich verglichen werden können, müssen sie vom gleichen Typ sein, dieselbe Länge haben und jedes Paar entsprechender Elemente muss gleich sein (z. B.
[1,2] == (1,2)
ist falsch, weil der Typ nicht gleich ist).
- Sammlungen, die den Auftragsvergleich unterstützen, werden genauso geordnet wie ihre ersten ungleichen Elemente (haben beispielsweise
[1,2,x] <= [1,2,y]
den gleichen Wert wie x <= y
). Wenn kein entsprechendes Element vorhanden ist, wird zuerst die kürzere Sammlung sortiert (z. B. [1,2] < [1,2,3]
true).
Wenn nicht gleich, werden die Sequenzen genauso geordnet wie ihre ersten unterschiedlichen Elemente. Beispielsweise gibt cmp ([1,2, x], [1,2, y]) dasselbe zurück wie cmp (x, y). Wenn das entsprechende Element nicht vorhanden ist, wird die kürzere Sequenz als kleiner betrachtet (z. B. [1,2] <[1,2,3] gibt True zurück).
Anmerkung 1 : <
und >
bedeuten nicht "kleiner als" und "größer als", sondern "ist vor" und "ist nach": also (0, 1) "ist vor" (1, 0).
Anmerkung 2 : Tupel dürfen nicht als Vektoren in einem n-dimensionalen Raum betrachtet werden , verglichen mit ihrer Länge.
Hinweis 3 : Beziehen Sie sich auf Frage /programming/36911617/python-2-tuple-comparison : Denken Sie nicht, dass ein Tupel nur dann "größer" als ein anderes ist, wenn ein Element des ersten Tupels größer als das entsprechende ist einer in der zweiten.
<
und gesprochen wird>
. Zum Beispiel(0, 1) < (1, 0)
wertet auf ausTrue
.x = tuple([0 for _ in range(n)])
und mache dasselbe für y. Das Setzen von n = 100, 1000, 10.000 und 100.000 und das Ausführen%timeit x==y
ergaben Zeitwerte von 0,5, 4,6, 43,9 bzw. 443 Mikrosekunden, was ungefähr so nahe an O (n) liegt, wie Sie praktisch erhalten können.<
und>
bedeuten nicht "kleiner als" und "größer als", sondern "kommt vor" und "kommt nach": also(0, 1)
"kommt vor"(1, 0)
Die Python-Dokumentation erklärt es.
quelle
Die Python 2.5-Dokumentation erklärt es gut.
Leider scheint diese Seite in der Dokumentation für neuere Versionen verschwunden zu sein.
quelle
a = ('A','B','C') # see it as the string "ABC" b = ('A','B','D')
A wird
ord('A') #65
für andere Elemente in das entsprechende ASCII konvertiertSo
>> a>b # True
können Sie daran denken als Vergleich zwischen string (Es ist genau das , tatsächlich)Das Gleiche gilt auch für ganze Zahlen.
x = (1,2,2) # see it the string "123" y = (1,2,3) x > y # False
weil (1 ist nicht größer als 1, gehe zum nächsten, 2 ist nicht größer als 2, gehe zum nächsten 2 ist kleiner als drei - flexikographisch -)
Der entscheidende Punkt wird in der obigen Antwort erwähnt
quelle
(1,2,3) > (1,2,2)
gibtTrue