Kapitel 7
Sequenzen, Mengen und Generatoren
210
Liste liste modifizieren – z.B. die Liste [1, 2] –, so ist diese Veränderung auch in der fla-
chen Kopie
liste2 sichtbar:
Mit der Funktion
deepcopy() im Modul copy können Sie tiefe Kopien zusammengesetzter
Objekte anfertigen. Dabei werden auch Unterobjekte kopiert. Eine tiefe Kopie ist also ein
völlig selbstständiges System von Objekten und hat keinerlei Zusammenhang mehr zum
Original.
Abb. 7.2: Original, Alias und Kopien einer Liste von Listen
7.4.4 Listen sortieren
Eine Liste s heißt aufsteigend sortiert, wenn für alle Indexe i, j aus der Menge {0, ...,
len(s)-1}
mit j >= i gilt: s[j] >= s[i]. Das heißt, die Elemente der Liste werden nach
hinten immer größer. Sortierte Listen haben gegenüber unsortierten Listen einen entschei-
denden Vorteil: Man kann schneller ein bestimmtes Objekt der Liste wiederfinden. Das ist
auch der Grund, warum man im Alltag Dinge sortiert:
>>> liste[0][0] = 100 # Verändern des ersten Elementes
>>> liste2 # flache Kopie
[[100, 2], [3, 4]]
>>> liste = [[1,2], [3,4]]
>>> import copy
>>> liste3 = copy.deepcopy(liste) # tiefe Kopie erzeugen
>>> liste[0][0] = 100
>>> liste
[[100, 2], [3, 4]]
>>> liste3
[[1, 2], [3, 4]]
[1, 2]
[3, 4]
[ , ]
listeOriginal
liste1
[1, 2]
[3, 4]
[ , ]
[ , ]
liste2
liste3
A
lias
flache Kopie
tiefe Kopie
211
7.4
Listen
Beim Kartenspielen sortiert man die Karten, die man in der Hand hält.
In einem Telefonbuch sind die Einträge nach den Namen der Anschlussinhaber aufstei-
gend sortiert.
Wir werden später auf diesen Punkt zurückkommen. Weil das Sortieren so wichtig ist, besit-
zen Listen-Objekte die Methode
sort(), durch deren Aufruf eine Liste aufsteigend sortiert
wird.
Zahlen werden nach ihrem numerischen Wert sortiert, Zeichenketten nach der lexikali-
schen Ordnung entsprechend der unterschiedlichen Bedeutung des Vergleichsoperators
>=
bei verschiedenen Datentypen. Beispiele:
Wenn eine Liste von Sequenz-Objekten sortiert wird, werden zunächst die ersten Kompo-
nenten der Sequenzen verglichen. Bei Gleichheit werden die weiteren Komponenten hinzu-
gezogen.
Beispiel:
Sie können die Arbeitsweise der Methode
sort() durch die optionalen Schlüsselwort-
argumente
key und reverse verändern.
Mit
key=function übergeben Sie den Namen einer einstelligen Funktion (eine Funktion
mit einem Argument), die auf jedes Element der Liste vor dem Sortieren angewendet wird.
Beim Sortieren werden dann die Werte, die diese Funktion liefert, verglichen.
Beispiel: Sie haben eine Liste von Wörtern und möchten sie nach der Länge aufsteigend sor-
tieren. Zuerst das kürzeste Wort, dann zweitkürzeste usw. Dann übergeben Sie als Argu-
ment die Standardfunktion
len. Dann werden beim Sortieren nicht die Zeichenketten,
sondern ihre Längen verglichen.
>>> liste = [23, 12, 2144]
>>> liste
[23, 12, 2144]
>>> liste.sort()
>>> liste
[12, 23, 2144]
>>> liste = ['c', 'b', 'a']
>>> liste.sort()
>>> liste
['a', 'b', 'c']
>>> liste = [(1, 4), (0, 9, 9), (10, 1)]
>>> liste.sort()
>>> liste
[(0, 9, 9), (1, 4), (10, 1)]
>>> liste = ['Gegenwart', 'Vergangenheit', 'Zukunft']
>>> liste.sort(key=len)

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.