Название: Routineaufgaben mit Python automatisieren
Автор: Al Sweigart
Издательство: Bookwire
Жанр: Математика
isbn: 9783960889571
isbn:
['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, nicht aber für andere Werte wie etwa Strings oder Integer. Wenn Sie Folgendes in die interaktive Shell eingeben, erhalten Sie die Fehlermeldung AttributeError:
>>> eggs = 'hello'
>>> eggs.append('world')
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
eggs.append('world')
AttributeError: 'str' object has no attribute 'append'
>>> bacon = 42
>>> bacon.insert(1, 'world')
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
bacon.insert(1, 'world')
AttributeError: 'int' object has no attribute 'insert'
Elemente mit remove() aus Listen entfernen
Wenn Sie die Methode remove() für eine Liste aufrufen, übergeben Sie ihr den Wert, den Sie aus dieser Liste entfernen möchten. Probieren Sie das wie folgt in der interaktiven Shell aus:
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam.remove('bat')
>>> spam
['cat', 'rat', 'elephant']
Wenn Sie versuchen, einen Wert aus einer Liste zu entfernen, der gar nicht vorhanden ist, erhalten Sie den Fehler ValueError:
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam.remove('chicken')
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
spam.remove('chicken')
ValueError: list.remove(x): x not in list
Kommt der Wert mehrmals in der Liste vor, so wird nur das erste Vorkommen entfernt:
>>> spam = ['cat', 'bat', 'rat', 'cat', 'hat', 'cat']
>>> spam.remove('cat')
>>> spam
['bat', 'rat', 'cat', 'hat', 'cat']
Wenn Sie den Index des Elements kennen, das Sie aus einer Liste löschen wollen, können Sie die Anweisung del verwenden; kennen Sie dagegen den Wert des Elements, so nutzen Sie zum Entfernen remove().
Elemente in einer Liste mit sort() sortieren
Listen von Zahlenwerten oder Strings lassen sich mit der Methode sort() sortieren. Betrachten Sie dazu das folgende Beispiel:
>>> spam = [2, 5, 3.14, 1, -7]
>>> spam.sort()
>>> spam
[-7, 1, 2, 3.14, 5]
>>> spam = ['ants', 'cats', 'dogs', 'badgers', 'elephants']
>>> spam.sort()
>>> spam
['ants', 'badgers', 'cats', 'dogs', 'elephants']
Wenn Sie True für das Schlüsselwortargument reverse übergeben, sortiert sort() die Elemente in umgekehrter Reihenfolge:
>>> spam.sort(reverse=True)
>>> spam
['elephants', 'dogs', 'cats', 'badgers', 'ants']
Bei der Verwendung von sort() müssen Sie drei Dinge beachten. Erstens sortiert sort() die Liste unmittelbar. Versuchen Sie also nicht, den Rückgabewert zu erfassen, indem Sie Code wie spam = spam.sort() schreiben.
Zweitens können Sie keine Listen sortieren, in denen sowohl Zahlen als auch Strings vorkommen, da Python solche unterschiedlichen Werte nicht vergleichen kann. Bei dem folgenden Beispiel ergibt sich daher der Fehler TypeError:
>>> spam = [1, 3, 2, 4, 'Alice', 'Bob']
>>> spam.sort()
Traceback (most recent call last):
File "<pyshell#70>", line 1, in <module>
spam.sort()
TypeError: '<' not supported between instances of 'str' and 'int'
Drittens verwendet sort() statt der normalen alphabetischen Sortierung eine ASCII-Sortierung. Das bedeutet, dass alle Großbuchstaben vor den Kleinbuchstaben angeordnet werden. Ein kleines a steht daher hinter dem großen Z! Das können Sie an folgendem Beispiel erkennen:
>>> spam = ['Alice', 'ants', 'Bob', 'badgers', 'Carol', 'cats']
>>> spam.sort()
>>> spam
['Alice', 'Bob', 'Carol', 'ants', 'badgers', 'cats']
Wenn Sie die Werte in regulärer alphabetischer Reihenfolge sortieren müssen, übergeben Sie im Aufruf der Methode sort() den Wert str.lower für das Schlüsselwortargument key:
>>> spam СКАЧАТЬ