veränderte Reihenfolge mit print

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
hahuhahu
User
Beiträge: 1
Registriert: Dienstag 2. Juli 2013, 11:15

Im Moment lerne ich Python mit dem Buch "Einstieg in Python" von Thomas Theis.
Auf der Seite 123 steht folgendes Beispiel:
#Set
s1 = set([8, 15, "x")]
print("Original:, s1)
Der Ausdruck sieht so aus: Original: {8, 'x', 15}
Warum ist die Reihenfolge verändert?
Benutzeravatar
Dobi
User
Beiträge: 31
Registriert: Mittwoch 28. September 2011, 17:04

Hallo,
zunächst einmal hast du ungültigen Code gepostet (Klammern, Anführungszeichen). So gehts:

Code: Alles auswählen

s1 = set([8, 15, "x"])
print("Original:", s1)
Und mit den python-code-tags sieht er doch auch gleich hübscher aus. ;-)
Die Reihenfolge ist verändert, weil:
A set is an unordered collection with no duplicate elements.
http://docs.python.org/3/tutorial/datas ... .html#sets
Ein set ist eigentlich nur ein Sonderfall eines dicts, und wie die Reihenfolge in der internen hash-Tabelle aussieht, hängt von der Implementierung ab.
Du könntest es im Nachhinein für die Ausgabe natürlich wieder sortieren, aber in deinen Fall (unterschiedliche Datentypen) müsstest du dir da dann erstmal überlegen, nach was du es überhaupt sortiert haben willst. "x"<8? usw.

Edit: Wenn du das set nur benutzt, um die elemente deine Liste mal eben unique zu machen, dabei aber die Reihenfolge beibehalten willst, ist vielleicht eine der "order preserving"-Lösungen von hier besser für dich geeignet: http://www.peterbe.com/plog/uniqifiers-benchmark
Antworten