cofi hat geschrieben:Um, Unveraenderlichkeit _ist_ der wesentliche Unterschied zwischen Listen und Tupeln. Was hat du aus den Posts denn jetzt anderes herausgelesen?
Dass die Definition bei Tupeln durch die Kommata erfolgt, welche hingegen bei Listen eine völlig andere Bedeutung haben, deren Definition durch Klammern gegeben ist. Entsprechend ist die Syntax von Konstanten - insbesondere von Listen von Listen von Listen völlig unterschiedlich.
Der Unterschied ist für mich nicht weniger wesentlich, insbesondere daher, dass ja Tupel im Grunde nur durch Konstanten definierbar sind.
Solange ich Tupel benutze, die mindestens 2 Elemente haben, fällt mir das nicht auf. Wenn ich aber genau 1 habe - und dieser Umstand ist häufiger, als oberflächlich betrachtet, unterscheidet sich die Syntax sehr. Darauf bin ich definitiv schon hereingefallen.
a = [[[[1]]]] ist eine Liste von Listen von Listen von Listen von Integer, wobei jede dieser verschachtelten Listen genau 1 Element enthält.
Wenn ich irgendwelche Strukturen dieser Art zusammengebastelt habe (gut, meist waren es weniger "Etagen"), dann habe ich - wenn ich zum Test Konstanten verwendet habe - das immer mit Tupeln abgebildet (logischerweise). Solange meine Tests auch je Zeile immer mindestens 2 Elemente hatten, war es kein Problem. Mein Hä?- Effekt kam offensichtlich immer an solchen Stellen. Irgendwann habe ich dann doch Listen verwendet, weil es irgendwie besser lief, auch wenn ich es mir nicht erklären konnte.
Aber ich hätte einfach nur
a = ((((1,),),),) schreiben müssen.
Tut mir leid, aber mich hat das verwirrt.
Vielleicht wäre es für die Sprache von Vorteil, das abschließende Komma für alle Tupel zu erzwingen, nicht bloß für einelementige. Aber das ist eine fruchtlose Diskussion. Ich weiß es nun und vielleicht liest jemand mit einem ähnlichen Verständnisproblem ja mal diesen Thread ...
Vielleich noch mal zur Erklärung: Ich habe häufig mit Geographischen Informationen zu tun. Zum Teil sind die Objekte, die ich bekomme, schon so oder so ähnlich, zum Teil lohnte es scheinbar nicht, aus den Zwischenebenen Klassen zu machen, da sie letztlich dumm waren und eigentlich nur ein getter und setter brauchten. Und so kamen schnell mal Listen von Listen... zusammen