A Byte of Python

Listen

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.

Kurzeinführung in Objekte und Klassen

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.

Benutzung von Listen

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
				
				

Ausgabe

				
$ 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']
				
				

So funktioniert es

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).