Eine Liste
ist eine Datenstruktur, die eine angeordnete
Sammlung von Objekten enthält, d.h. in einer Liste kann man eine
Sequenz (eine Abfolge) von Objekten abspeichern.
Sie können sich das wie eine Einkaufsliste vorstellen, die eine Liste
von zu kaufenden Dingen darstellt, außer dass Sie auf ihrer Einkaufsliste
die Dinge wahrscheinlich in getrennten Zeilen stehen haben,
wohingegen in Python zwischen den Objekten Kommas gesetzt werden müssen.
Eine Liste von Objekten muss durch eckige Klammern ([
und ]
) eingeschlossen sein, damit Python sie als Liste erkennt.
Sobald Sie eine Liste erzeugt haben, können Sie ihr Objekte hinzufügen,
welche aus ihr entfernen oder nach bestimmten Objekten in ihr suchen. Da wir
Objekte hinzufügen und entfernen können, nennen wir eine Liste einen
veränderlichen Datentyp.
Bisher habe ich zwar die Diskussion von Objekten und Klassen prinzipiell aufgeschoben, doch brauchen wir jetzt eine kurze Erläuterung dieser Konzepte, damit Sie Listen besser verstehen können. Wir werden dieses Thema noch detaillierter in einem eigenen Kapitel untersuchen.
Eine Liste ist ein Beispiel für die Verwendung von Objekten und Klassen.
Wenn Sie eine Variable i
verwenden und ihr einen Wert,
z.B. die Ganzzahl 5
zuweisen, können Sie sich das als
die Erzeugung eines Objekts (einer
Instanz) i
der Klasse
(des Typs) int
vorstellen. Sie können sich auch
den Hilfetext help(int)
anzeigen lassen, um dies besser
zu verstehen.
Eine Klasse kann Methoden haben, d.h.
Funktionen, die zur Verwendung im Zusammenhang mit genau dieser Klasse
definiert werden. Sie können diese Funktionen einer Klasse nur verwenden,
wenn Sie ein Objekt der Klasse haben. Zum Beispiel stellt Python die Methode
append
der Klasse list
zur
Verfügung. Diese Methode erlaubt es Ihnen, ein Objekt am Ende einer
Liste anzufügen. So wird zum Beispiel meineliste.append("ein Ding")
den String "ein Ding"
am Ende der Liste
meineliste
anfügen. Beachten Sie die Verwendung der
Punktnotation, mit der Sie die Methode eines Objekts aufrufen können.
Außerdem kann eine Klasse Felder haben,
bei denen es sich um nichts weiter als Variablen handelt, die nur im Zusammenhang
mit der Klasse verwendet werden können. Sie können diese Variablen/Namen nur
verwenden, wenn Sie ein Objekt der Klasse haben. Auf Felder wird ebenfalls
mit der Punktnotation zugegriffen, z.B. meineliste.feld
.
Beispiel 9.1. Benutzung von Listen (listen.py)
#!/usr/bin/python # Dies ist meine Einkaufsliste einkaufsliste = ['Aepfel', 'Mangos', 'Karotten', 'Bananen'] print 'Ich habe', len(einkaufsliste), 'Dinge einzukaufen.' print 'Diese Dinge sind:', # Beachten Sie das Komma am Zeilenende for ding in einkaufsliste: print ding, print '\nIch muss auch Reis einkaufen.' einkaufsliste.append('Reis') print 'Meine Einkaufsliste ist jetzt:' print einkaufsliste print 'Jetzt werde ich meine Einkaufsliste sortieren.' einkaufsliste.sort() print 'Die sortierte Einkaufsliste ist:' print einkaufsliste print 'Zuerst werde ich', einkaufsliste[0], 'kaufen.' altesding = einkaufsliste[0] del einkaufsliste[0] print 'Ich habe', altesding, 'gekauft.' print 'Meine Einkaufsliste ist jetzt:' print einkaufsliste
$ python listen.py Ich habe 4 Dinge einzukaufen. Diese Dinge sind: Aepfel Mangos Karotten Bananen Ich muss auch Reis einkaufen. Meine Einkaufsliste ist jetzt: ['Aepfel', 'Mangos', 'Karotten', 'Bananen', 'Reis'] Jetzt werde ich meine Einkaufsliste sortieren. Die sortierte Einkaufsliste ist: ['Aepfel', 'Bananen', 'Karotten', 'Mangos', 'Reis'] Zuerst werde ich Aepfel kaufen. Ich habe Aepfel gekauft. Meine Einkaufsliste ist jetzt: ['Bananen', 'Karotten', 'Mangos', 'Reis']
Die Variable einkaufsliste
ist eine Einkaufsliste für
jemanden, der auf den Markt geht. In einkaufsliste
speichern wir nur die Namen der Dinge als Strings ab; aber denken Sie daran,
dass Sie einer Liste alle Arten von Objekten hinzufügen
können, also auch Zahlen und sogar andere Listen.
Wir haben auch die for..in
-Schleife verwendet, um
die Elemente in der Liste zu durchlaufen. Inzwischen werden Sie gemerkt
haben, dass eine Liste auch eine Sequenz ist. Die Besonderheiten von
Sequenzen werden wir in einem späteren
Abschnitt besprechen.
Beachten Sie, dass wir ein Komma am Ende der
print
-Anweisung verwendet haben, um die automatische
Ausgabe eines Zeilenumbruchs nach der print
-Anweisung
zu unterdrücken. Das ist eine etwas unschöne Weise, dies zu erreichen,
aber sie ist einfach und erreicht genau das, was wir wollen.
Als Nächstes fügen wir unter Benutzung der Methode
append
der Liste ein Objekt hinzu, wie
wir es bereits besprochen haben. Dann überprüfen wir, ob das
Objekt der Liste wirklich hinzugefügt wurde, indem wir den Inhalt
der Liste einfach der print
-Anweisung übergeben,
die uns die Liste in einer übersichtlichen Weise ausgibt.
Danach sortieren wir die Liste mit der zur Liste gehörenden Methode
sort
. Beachten Sie, dass diese Methode
die Liste selbst verändert und nicht etwa eine veränderte Liste
zurückliefert - hierin unterscheidet sie sich im Verhalten von Strings.
Das ist gemeint, wenn wir sagen, eine Liste sei
veränderlich, Strings dagegen
unveränderlich.
Nachdem wir etwas auf dem Markt gekauft haben, wollen wir es aus der
Liste entfernen. Das erreichen wir durch die Anweisung del
.
Wir geben hierbei an, welches Objekt wir aus der Liste entfernen wollen, und
die del
-Anweisung löscht es für uns aus der Liste.
Da wir das erste Objekt aus der Liste entfernen wollen, verwenden wir
del einkaufsliste[0]
(erinnern Sie sich daran, dass
Python bei 0 zu zählen beginnt).
Wenn Sie alle Methoden wissen möchten, die für Listen-Objekte
definiert sind, dann erhalten Sie die Details mit help(list)
.