Seite 1 von 1

tuples und listen vergleichen

Verfasst: Freitag 27. Januar 2006, 19:59
von henning
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

Verfasst: Freitag 27. Januar 2006, 23:19
von BlackJack
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.

Verfasst: Samstag 28. Januar 2006, 10:08
von henning
...das macht natürlich Sinn, danke!

Re: tuples und listen vergleichen

Verfasst: Montag 11. November 2024, 17:26
von __blackjack__
Update für Python 3: Werte von verschiedenen Typen lassen sich nicht mehr so wie in Python 2 auf grösser oder kleiner vergleichen:

Code: Alles auswählen

In [63]: (1, 2) < [1, 3]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[63], line 1
----> 1 (1, 2) < [1, 3]

TypeError: '<' not supported between instances of 'tuple' and 'list'
Datentypen können natürlich weiterhin selbst entscheiden wie das Ergebnis eines Vergleichs mit anderen Werten und auch Werten von anderen Datentypen ausgeht.