
Verschachtelte Listen und Schleifen mit Python
Listen sind eindimensional. Oft benötigt man mehrdimensionale Strukturen. Verschachtelte Listen sind ein Beispiel dafür. Eine zweidimensionale Matrix oder ein Schachbrett können als verschachtelte Liste programmiert werden. Der Blog-Post stellt zweidimensionale Listen vor.
Python ist sehr flexibel und wir können Elemente beliebig verschachteln. Hol dir das Cheat Sheet mit den grundlegenden Datentypen von Python. In diesem Blog-Post konzentrieren wir uns auf den Datentyp list
– also auf Listen.
Beispiel einer verschachtelten Liste
spielbrett = [ \ ['a1','a2','a3'],\ ['b1','b2','b3'],\ ['c1','c2','c3'] \ ]
Eine zweidimensionale Liste in Python
Beachte: Der Code wird viel übersichtlicher, wenn die langen Befehle auf mehrere Zeilen aufgeteilt werden.
spielbrett
ist eine Liste von Listen. Hier bauen wir die inneren Listen so auf, dass alle Elemente vom gleichen Datentyp sind. Das braucht nicht so zu sein, passt jedoch sehr gut zu unserem Beispiel: Wir wollen ein Spielbrett darstellen.
Mit einer Schleife geben wir die einzelnen Elemente der Liste aus:
spielbrett = [ \ ['a1', 'a2', 'a3'], \ ['b1', 'b2', 'b3'], \ ['c1', 'c2', 'c3'] ]
for zeile in spielbrett: print(zeile)
Ausgabe:
['a1', 'a2', 'a3'] ['b1', 'b2', 'b3'] ['c1', 'c2', 'c3']
Die Elemente der Liste spielbrett
sind ihrerseits wieder Listen. Mit zwei verschachtelten Schleifen, gelingt eine schönere Ausgabe:
for zeile in spielbrett: z = '' for element in zeile: z += element + ' ' print(z)
Ausgabe
a1 a2 a3 b1 b2 b3 c1 c2 c3
Die innere Schleife durchläuft die Elemente der inneren Liste, die durch die äußere Schleife gewählt wurde. Eine verschachtelte Datenstruktur benötigt also verschachtelte Schleifen.
Beachte: print()
beginnt eine neue Zeile. Um das Spielbrett schön darzustellen, ist das störend. Wir helfen uns mit der Variablen z
.
Diese initialisieren wir als leere Zeichenkette bevor wir die Elemente einer einzelnen Zeile durchlaufen. Und statt die Elemente der einzelnen Zeile direkt mit print()
auszugeben, verketten wir sie der Reihe nach in z
. Ist die innere Schleife fertig, dann geben wir z
aus.
Probiere folgendes aus und ersetze z += element + ' '
durch
print(element) z += element
Erinnere: z += element + ' '
ist die Kurzform für z = z + element + ' '
Siehe auch: Eindimensionale Listen – Python und Java verglichen.
Python verschachtelte Listen – einfache Übungen
Wende die Theorie praktisch an und vertiefe dein Verständnis. Entwickle die Lösungen der Challenges im Playground und vergleiche das Ergebnis mit der Erwartung. Klicke auf die Challenge und wende dein Können an.
Challenge 1
Erstelle eine verschachtelte Liste brett wie folgt:
brett = [['a0', 'a1'], ['b0', 'b1']]
Schreib ein Programm, das aus der Liste brett
eine neue Liste ergebnis
enthält, deren Elemente die Verkettung der einzelnen Elemente der inneren Liste enthält. Gib die Variable ergebnis
aus.
Für das Beispiel brett
soll diese Ausgabe erzeugt werden:
['a0a1', 'b0b1']
Teste mit anderen verschachtelten Listen, die auch eine andere Anzahl innere Listen unterschiedlicher Länge enthalten.
Challenge 2
Nehme die folgende Liste zahlen = [[1, 2], [3, 4]]
bilde eine neue Liste produkte
, die die Produkte der inneren Listen von zahlen
enthält. In diesem Beispiel lautet das Ergebnis [2, 12]
.
Teste mit anderen verschachtelten Listen, die auch eine andere Anzahl innere Listen unterschiedlicher Länge enthalten.
Challenge 3
Verwende Zählschleifen, um die Liste
[['a0', 'a1'], ['b0', 'b1']]
schön formatiert auszugeben. Das erwartete Ergebnis sieht wie folgt aus:
a0 a1b0 b1
Challenge 4
Untersuche diesen Code. Was bewirkt er?
liste = ['Adam', 'Eva'] for i, el in enumerate(liste): print(f'{i=} {el=}')