next up previous contents index 6163656769
Next: 2.4 Tupel Up: 2. Datenobjekte Previous: 2.2 Strings   Contents   Index


2.3 Listen

Listen sind mit Abstand der wichtigste Datentyp. Genauso wie Strings sind Listen zusammengesetzte Objekte. Bei ihnen kann jedoch das was an den einzelnen Stellen steht, ein beliebiges Objekt sein. Listen sind Aufzählungen, die durch eckige Klammern eingeschachtelt sind. So sind zum Beispiel

>>>drei=['Bete ','und']

>>>['Eins',2,drei]

solche Listen. Wie sie sehen, enthält die zweite (keinem Namen zugewiesene) Liste die Liste »drei« an dritter Stelle. Geben Sie dieser Liste doch am besten einen Namen, etwa

>>>aufDiePlaetze=['Eins',2,drei]
Genauso wie bei Strings gibt es hier ein Slicing. Geben Sie ein:

>>>aufDiePlaetze[2]
Alle Aktionen, die wir bei Strings gesehen haben, lassen sich übertragen. Aber es gibt einen kleinen, jedoch sehr feinen Unterschied.

>>>drei=drei+['arbete.']

>>>drei

>>>aufDiePlaetze

Was ist jetzt los? In der ersten Zeile wurde dem Namen »drei« ein Objekt zugewiesen, das aus dem alten Objekt, auf das der Name vorher zeigte (also die Liste ['Bete ','und ']) offenbar eine neue Liste macht, die um 'arbeite' länger ist. Nun, genau das bestätigt anscheinend die nächste Eingabe, jedoch nicht die dritte. Die Liste »aufDiePlätze« sieht noch genau so aus wie vorher. Der Liste »aufDiePlätze« wurde bei der Zuweisung der Name »drei« übergeben, der auf ein bestimmtes Objekt mit einem bestimmten Inhalt zeigte. Dieser alte Inhalt ist bei Veränderung des Objektes, auf das »drei« zeigt, immer noch da! Durch den Additionsoperator wurde ein neues Objekt erstellt, auf das nun der Name »drei« zeigt. Davon wird die Liste »aufDiePlätze« nicht berührt.

Wird nun aber die Liste »drei« an Ort und Stelle verändert, indem wir dem ersten Element einen anderen Wert zuweisen,

>>>drei[0]='Arbete '
so zeigen die Aufrufe

>>>drei

>>>aufDiePlaetze

die Auswirkungen. Sowohl die Liste »drei« als auch die Liste »aufDiePlaetze« ist von der Veränderung betroffen, denn durch die Zuweisung »drei[0]='Arbete'« wird kein neues Objekt erstellt, sondern das alte lediglich verändert! Der Name »drei« zeigt also immer noch auf dasselbe Objekt!! Bedenken Sie, dass im Falle eines Strings der Form

>>>drei='Bete und arbete.'
zwar ein Zugriff auf »drei[0]« möglich ist, aber keine Zuweisung der Form »drei[0]='Arbete'«. Strings sind unveränderliche Sequenzen, während Listen veränderliche Sequenzen darstellen. Bei Listen ist listenname[i] immer ein Name, der auf ein Objekt zeigt, während bei Strings dieses eine Anweisung ist, um ein neues Objekt zu erstellen, der lediglich das Zeichen an der Stelle $ i$ enthält.

Listen sind also in der Tat Regale, aus denen man bestimmte Objekte verändern kann. Ja, es ist auch möglich, wie wir später sehen werden, Objekte aus diesen Regalen zu entfernen oder hinzuzufügen. Listen sind die dynamischsten Objekte, die es in Python gibt. Daher werden sie auch so häufig verwendet2.5.

Im folgenden Abschnitt lernen wir nun einen wieder etwas weniger dynamischen Datentyp kennen, der viel eher der herkömmlichen Vorstellung einer Liste entspricht.


next up previous contents index 6163656769
Next: 2.4 Tupel Up: 2. Datenobjekte Previous: 2.2 Strings   Contents   Index
Heiko Schroeder 2003-03-19