Routineaufgaben mit Python automatisieren. Al Sweigart
Die Funktion random.shuffle() sortiert die Listeneinträge um. Dabei ändert sie unmittelbar die vorhandene Liste, anstatt eine neue zurückzugeben. Das können Sie wie folgt in der interaktiven Shell ausprobieren:
>>> import random
>>> people = ['Alice', 'Bob', 'Carol', 'David']
>>> random.shuffle(people)
>>> people
['Carol', 'David', 'Alice', 'Bob']
>>> random.shuffle(people)
>>> people
['Alice', 'David', 'Bob', 'Carol']
Erweiterte Zuweisungsoperatoren
Nachdem Sie einer Variablen einen Wert zugewiesen haben, werden Sie sie im weiteren Verlauf gewöhnlich noch oft verwenden. Im folgenden Beispiel wird der Variablen spam zunächst der Wert 42 zugewiesen, der dann später um 1 erhöht wird:
>>> spam = 42
>>> spam = spam + 1
>>> spam
43
Als Kurzschreibweise können Sie dazu auch den erweiterten Zuweisungsoperator += verwenden:
>>> spam = 42
>>> spam += 1
>>> spam
43
Wie Sie in Tabelle 4–1 sehen, gibt es erweiterte Zuweisungsoperatoren für +, -, *, / und %:
Erweiterter Zuweisungsoperator | Entsprechende Zuweisungsanweisung |
spam += 1 | spam = spam + 1 |
spam -= 1 | spam = spam - 1 |
spam *= 1 | spam = spam * 1 |
spam /= 1 | spam = spam / 1 |
spam %= 1 | spam = spam % 1 |
Tab. 4–1 Erweiterte Zuweisungsoperatoren
Der Operator += kann auch für die String- und Listenverkettung eingesetzt werden, der Operator *= auch für String- und Listenwiederholung. Geben Sie Folgendes in die interaktive Shell ein:
>>> spam = 'Hello'
>>> spam += ' world!'
>>> spam
'Hello world!'
>>> bacon = ['Zophie']
>>> bacon *= 3
>>> bacon
['Zophie', 'Zophie', 'Zophie']
Methoden
Eine Methode ist eine Funktion, die für einen Wert aufgerufen wird. Wenn wir beispielsweise einen Listenwert in spam gespeichert haben, können wir die Listenmethode index() (die ich im Folgenden erklären werde) für diese Liste wie folgt aufrufen: spam.index('hello').
Jeder Datentyp verfügt über seinen eigenen Satz von Methoden. So hat der Listendatentyp beispielsweise einige sehr nützliche Methoden, um Elemente in einer Liste zu finden, hinzuzufügen, zu entfernen oder auf andere Weise zu bearbeiten.
Elemente in einer Liste mit der Methode index() finden
Für Listen gibt es die Methode index(). Wenn der ihr übergebene Wert in der Liste vorhanden ist, so gibt sie seinen Index zurück. Existiert der betreffende Wert in der Liste nicht, gibt Python den Fehler ValueError aus. Probieren Sie das wie folgt in der interaktiven Shell aus:
>>> spam = ['hello', 'hi', 'howdy', 'heyas']
>>> spam.index('hello')
0
>>> spam.index('heyas')
3
>>> spam.index('howdy howdy howdy')
Traceback (most recent call last):
File "<pyshell#31>", line 1, in <module>
spam.index('howdy howdy howdy')
ValueError: 'howdy howdy howdy' is not in list
Kommt ein Wert mehrfach in einer Liste vor, so wird der Index des ersten Auftretens zurückgegeben. Im folgenden Beispiel gibt index() nicht 3 zurück, sondern 1:
>>> spam = ['Zophie', 'Pooka', 'Fat-tail', 'Pooka']
>>> spam.index('Pooka')
1
Elemente mit den Methoden append() und insert() zu Listen hinzufügen
Um zu einer Liste neue Elemente hinzuzufügen, verwenden Sie die Methoden append() und insert(). Im folgenden Beispiel wird die Methode append() auf die Liste in der Variablen spam angewendet:
>>> spam = ['cat', 'dog', 'bat']
>>> spam.append('moose')
>>> spam
['cat', 'dog', 'bat', 'moose']
Wie Sie sehen, hängt die Methode append() ihr Argument an das Ende der Liste an. Mit insert() dagegen können Sie einen Wert an einer beliebigen Indexposition in der Liste einfügen. Das erste Argument von insert() ist der Index für den neuen Wert, das zweite der einzufügende Wert. Geben Sie Folgendes in die interaktive Shell ein:
>>> spam = ['cat', 'dog', 'bat']
>>> spam.insert(1, 'chicken')
>>> spam
['cat', 'chicken', 'dog', 'bat']
Beachten Sie, dass die korrekte Schreibweise spam.append('moose') bzw. spam.insert(1, 'chicken') lautet und nicht etwa spam = spam.append('moose') oder spam = spam.insert(1, 'chicken'). Weder append() noch insert() geben den neuen Wert von spam zurück. (Der Rückgabewert beider Methoden ist in Wirklichkeit None, und das ist nicht das, was Sie hier als neuen Variablenwert speichern wollen!) Stattdessen wird die Liste unmittelbar geändert. Mehr darüber erfahren Sie im Abschnitt »Veränderbare und unveränderbare Datentypen« weiter hinten in diesem Kapitel.
Methoden gehören jeweils zu einem einzigen Datentyp. So sind append() und insert() Listenmethoden, die nur für Listenwerte aufgerufen werden können,