



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
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: 2.4 Tupel
Up: 2. Datenobjekte
Previous: 2.2 Strings
Contents
Index
Heiko Schroeder
2003-03-19