tuples und listen vergleichen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Freitag 27. Januar 2006, 19:59

Hi
kleines Problem:
Wenn ich einen Ausdruck wie (a, b) < (c, d) schreibe, vergleicht er anscheinend erst a und c und wenn die gleich sind b und d und liefert das Ergebnis.
Das finde ich auch ganz gut so
Wenn ich aber jetzt aus einem dieser tuple eine liste mache, stimmt das nicht mehr!

Weiß jemand wie dann verglichen wird? Und mit welchem Hintergrund?

Code: Alles auswählen

>>> (1, 2) < [1, 3]
False
>>> (1, 2) > [1, 3]
True
>>> (1, 2) == [1, 3]
False
>>> (1, 1) > [1, 1]
True
BlackJack

Freitag 27. Januar 2006, 23:19

Wenn Du verschiedene (eingebaute) Typen mit '<' oder '>' vergleichst dann bekommst Du "irgendein" Ergebnis, das aber auf jeden Fall konsistent ist. Also das zum Beispiel Tupel immer "kleiner" als Listen sind. Das kann bei einer anderen Python-Version andersherum sein, aber innerhalb eines Programmablaufs gibt's eine totale Ordnung.

Bei benutzerdefinierten Typen kannst Du natürlich '<' und/oder '>' überschreiben und das Verhalten von denen damit ändern.

Hintergrund ist AFAIK das `list.sort()` auch funtkionieren sollte wenn man eine Liste mit den unterschiedlichsten Typen sortiert und das dabei immer ein eindeutiges Ergebnis herauskommen sollte.
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Samstag 28. Januar 2006, 10:08

...das macht natürlich Sinn, danke!
Antworten