🏆

Aufgabe gelöst!

Sehr gut!

+30 XP


⚡ 0 XP
✅ 0 gelöst
🔥 0
⊞

Listen von Listen (2D)

Informatik · Python · Klassen 10–13 · PRIMM-Methode

Python Interaktiv Kl. 10–13
🎯 Worum geht's? Klasse 10–13 · 2 Unterrichtsstunden

Nach dieser Seite kannst du …

  • eine Liste von Listen anlegen und ihre Zeilen- und Spaltenzahl bestimmen
  • mit m[zeile][spalte] auf einzelne Felder zugreifen
  • vorhersagen, in welcher Reihenfolge verschachtelte Schleifen die Felder besuchen
  • Summen, Maximum, Diagonalen und das Transponieren selbst programmieren
  • typische Indexfehler finden und beheben

Vorwissen: Listen und for-Schleifen in Python

📝 Aufgaben

Jede Aufgabe hat fünf Schritte: Predict › Run › Investigate › Modify › Make. Wähle eine Aufgabe aus – oder nutze oben die Leiste „Aufgaben: 1, 2, 3 …“.

0
⚡ Gesammelte XP
0
✅ Aufgaben abgeschlossen
0
🔥 Streak (Tage)
–
🎯 Genauigkeit

📐 Das Wichtigste in Kürze

Eine Liste von Listen ist wie eine Tabelle: jede innere Liste ist eine Zeile.

Spalte 0Spalte 1Spalte 2
Zeile 0123
Zeile 1456
  • m = [[1, 2, 3], [4, 5, 6]]; m[1][2] ist 6.
  • len(m) = Anzahl der Zeilen, len(m[0]) = Länge der ersten Zeile.
  • Leere 3 × 4-Tabelle: [[0] * 4 for _ in range(3)] – nicht [[0] * 4] * 3 (dann wären alle Zeilen dieselbe Liste!).

🏅 Zuletzt verdiente Badges

🔮 Predict
Aufgabe 1 – Größe bestimmen

Lies den Code und sage die Ausgaben voraus.

m = [[0] * 4 for _ in range(3)] print(len(m)) print(len(m[0])) b = [[1, 2], [3, 4], [5, 6]] print(len(b) * len(b[0]))

Was gibt Zeile 2 aus?

Was gibt Zeile 3 aus?

Was gibt Zeile 5 aus?

len(m) zählt die inneren Listen (Zeilen), len(m[0]) die Werte der ersten Zeile.
▶️ Run – Größen bestimmen

Trage Zeilen, Spalten und Felder insgesamt ein.

ListeZeilenSpaltenFelder
[[0] * 5 for _ in range(2)]
[[7, 8, 9]]
[[1], [2], [3], [4]]
Jede innere Liste ist eine Zeile; ihre Länge ist die Spaltenzahl.
🔍 Investigate

Was liefert len(m) bei einer Liste von Listen?

Was ist an [[0] * 4] * 3 problematisch?

✏️ Modify

Ein Stundenplan soll 5 Tage (Zeilen) mit je 6 Stunden (Spalten) haben. Passe die Zeile an.

🐍 Python – Modify
[0] * s erzeugt eine Zeile mit s Werten; range(z) legt fest, wie viele Zeilen entstehen.
🛠️ Make

Schreibe anzahl_felder(m): die Zahl aller Felder (alle Zeilen gleich lang).

🐍 Python – Make
Zeilenzahl mal Spaltenzahl.
🔮 Predict
Aufgabe 2 – Zugriff auf Felder

Eine leere Tabelle wird teilweise belegt.

t = [[0] * 3 for _ in range(2)] t[0][1] = 7 t[1][2] = 5 t[1][0] = t[0][1] + 1 print(t[0][0], t[1][0], t[1][2])

Was wird ausgegeben?

Nicht belegte Felder bleiben 0. t[1][0] bekommt den Wert von t[0][1] plus 1.
▶️ Run – Belegung eintragen

Trage ein, was am Ende in jedem Feld steht.

Spalte 0Spalte 1Spalte 2
Zeile 0
Zeile 1
Nur drei Felder werden belegt.
🔍 Investigate

Welches Feld ist t[1][2]?

Was ergibt t[-1][-1]?

✏️ Modify

Die letzte Zeile soll das Feld unten rechts auf 9 setzen, erzeugt aber einen Fehler. Korrigiere sie.

🐍 Python – Modify
Die Indizes beginnen bei 0. Welchen Index hat die letzte Zeile, welchen die letzte Spalte einer 2 × 3-Tabelle?
🛠️ Make

Schreibe setze_ecken(m, wert): Sie setzt alle vier Eckfelder auf wert – für Tabellen jeder Größe.

🐍 Python – Make
Letzte Zeile: len(m) - 1, letzte Spalte: len(m[0]) - 1. Welche vier Kombinationen ergeben die Ecken?
🔮 Predict
Aufgabe 3 – Verschachtelte Schleifen

Zwei Schleifen geben die Tabelle aus.

m = [[1, 2, 3], [4, 5, 6]] for z in range(len(m)): for s in range(len(m[z])): print(m[z][s], end=" ") print()

Wie oft wird Zeile 5 ausgeführt?

Was steht in der ersten Ausgabezeile?

Die äußere Schleife läuft über 2 Zeilen, die innere über 3 Spalten. print() beginnt eine neue Zeile.
▶️ Run – Durchläufe verfolgen

Trage für jeden Durchlauf der inneren Schleife z, s und den Wert ein.

Durchlaufzsm[z][s]
1001
2
3
4
5
6
Die innere Schleife läuft erst ganz durch, bevor z um 1 steigt.
🔍 Investigate

Welche Laufvariable ändert sich häufiger?

Was bewirkt end=" " in print?

✏️ Modify

Gib die Tabelle spaltenweise aus: zuerst 1 4, dann 2 5, dann 3 6 – je Spalte eine Zeile.

🐍 Python – Modify
Die äußere Schleife hält einen Index fest, während die innere den anderen durchläuft. Welche muss außen stehen?
🛠️ Make

Schreibe zaehle_groesser(m, grenze): Wie viele Werte sind größer als grenze?

🐍 Python – Make
Ein Zähler, zwei verschachtelte Schleifen, ein Vergleich.
🔮 Predict
Aufgabe 4 – Zeilen- und Spaltensummen

Die Schleife addiert die Werte einer Zeile.

p = [[3, 1, 4], [1, 5, 9], [2, 6, 5]] summe = 0 for s in range(len(p[1])): summe = summe + p[1][s] print(summe)

Wie oft läuft die Schleife?

Was wird ausgegeben?

p[1] ist die Zeile [1, 5, 9].
▶️ Run – Summen-Tabelle

Berechne für p alle Zeilensummen, Spaltensummen und die Gesamtsumme.

Spalte 0Spalte 1Spalte 2Zeilensumme
Zeile 0314
Zeile 1159
Zeile 2265
Spaltensumme
Zeilensumme waagerecht, Spaltensumme senkrecht addieren.
🔍 Investigate

Welcher Index bleibt bei einer Spaltensumme gleich?

Jede Zeilensumme soll einzeln ausgegeben werden. Wo muss summe = 0 stehen?

✏️ Modify

Ändere den Code so, dass er die Summe der Spalte 2 berechnet (Ergebnis 18).

🐍 Python – Modify
Jetzt bleibt der Spaltenindex fest (2) und der Zeilenindex läuft.
🛠️ Make

Schreibe zeilensummen(m): eine Liste mit der Summe jeder Zeile (ohne sum).

🐍 Python – Make
Für jede Zeile eine eigene Summe bei 0 beginnen und am Ende anhängen.
🔮 Predict
Aufgabe 5 – Maximum und seine Position

Der Code sucht den größten Wert und merkt sich, wo er steht.

w = [[4, 9, 2], [7, 9, 8]] groesster = w[0][0] zeile = 0 spalte = 0 for z in range(len(w)): for s in range(len(w[z])): if w[z][s] > groesster: groesster = w[z][s] zeile = z spalte = s print(groesster, zeile, spalte)

Welchen Wert hat groesster am Ende?

Welche Position wird gespeichert?

Die 9 kommt zweimal vor. Bei > ersetzt nur ein größerer Wert das bisherige Maximum.
▶️ Run – Maximumsuche verfolgen

Derselbe Code läuft mit w = [[5, 3], [6, 6], [2, 8]]. Trage nach jedem Durchlauf die drei Werte ein.

w = [[5, 3], [6, 6], [2, 8]] groesster = w[0][0] zeile = 0 spalte = 0 for z in range(len(w)): for s in range(len(w[z])): if w[z][s] > groesster: groesster = w[z][s] zeile = z spalte = s print(groesster, zeile, spalte)
zsw[z][s]groessterzeilespalte
005500
013
106
116
202
218
Nur wenn der neue Wert größer ist, ändern sich alle drei Werte.
🔍 Investigate

Warum startet groesster mit w[0][0] statt mit 0?

Was ändert sich im Predict-Beispiel mit >= statt >?

✏️ Modify

Ändere den Code so, dass er das Minimum und seine Position findet (für die Predict-Werte: 2 in Zeile 0, Spalte 2).

🐍 Python – Modify
Was muss sich am Vergleich ändern, damit kleinere Werte übernommen werden?
🛠️ Make

Schreibe enthaelt(m, x): True, wenn x irgendwo vorkommt (ohne in auf Zeilen).

🐍 Python – Make
Sobald du x findest, kannst du sofort True zurückgeben. Wann weißt du sicher, dass x nicht vorkommt?
🔮 Predict
Aufgabe 6 – Diagonalen

In einer quadratischen Tabelle liegen q[0][0], q[1][1], … auf der Hauptdiagonale.

q = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] d = 0 for i in range(len(q)): d = d + q[i][i] print(d)

Welche Felder werden addiert?

Was wird ausgegeben?

Zeilen- und Spaltenindex sind gleich.
▶️ Run – Nebendiagonale

Für dieselbe Tabelle wird die Nebendiagonale (rechts oben nach links unten) addiert.

q = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] n = 0 for i in range(len(q)): n = n + q[i][len(q) - 1 - i] print(n)
iSpaltenindexWertn danach
0
1
2
Der Spaltenindex len(q) - 1 - i läuft 2, 1, 0.
🔍 Investigate

Warum reicht für die Hauptdiagonale eine Schleife?

Bei welcher Tabelle löst q[i][i] mit i bis len(q) - 1 einen Fehler aus?

✏️ Modify

Ändere den Code so, dass er alle Werte oberhalb der Hauptdiagonale addiert: 2 + 3 + 6 = 11.

🐍 Python – Modify
Oberhalb der Diagonale ist der Spaltenindex größer als der Zeilenindex. Bei welchem Index muss die innere Schleife beginnen?
🛠️ Make

Schreibe ist_einheitsmatrix(m): True, wenn auf der Hauptdiagonale nur 1 und sonst überall 0 steht.

🐍 Python – Make
Auf der Diagonale (z == s) muss 1 stehen, sonst 0. Schon eine Abweichung genügt für False.
🔮 Predict
Aufgabe 7 – Transponieren und Kopieren

Beim Transponieren werden Zeilen zu Spalten.

a = [[1, 2, 3], [4, 5, 6]] t = [[0] * len(a) for _ in range(len(a[0]))] for z in range(len(a)): for s in range(len(a[z])): t[s][z] = a[z][s] print(t)

Wie viele Zeilen hat t?

Welchen Wert hat t[0][1]?

Welchen Wert hat t[2][1]?

t[s][z] = a[z][s]: Zeile und Spalte tauschen die Rollen.
▶️ Run – Ergebnis eintragen

Trage ein, was am Ende in t steht.

Spalte 0Spalte 1
Zeile 0
Zeile 1
Zeile 2
Die erste Zeile von a wird zur ersten Spalte von t.
🔍 Investigate

Warum hat t len(a[0]) Zeilen?

Was passiert bei b = a und danach b[0][0] = 99?

✏️ Modify

Ändere den Code so, dass t eine gespiegelte Kopie von a wird: jede Zeile rückwärts, also [[3, 2, 1], [6, 5, 4]].

🐍 Python – Modify
t hat jetzt dieselbe Größe wie a. In welche Spalte von t gehört a[z][s]?
🛠️ Make

Schreibe kopiere(m): eine echte Kopie – neue Zeilen mit denselben Werten.

🐍 Python – Make
Es reicht nicht, die äußere Liste zu kopieren: Auch jede Zeile muss eine neue Liste sein. Warum reicht return m nicht?
🔮 Predict
Aufgabe 8 – Unterschiedlich lange Zeilen und Fehler

Die Zeilen einer Liste von Listen dürfen verschieden lang sein.

r = [[1, 2], [3, 4, 5], [6]] print(len(r[1])) print(r[2][0]) print(r[0][2])

Was gibt Zeile 4 aus?

Was gibt Zeile 5 aus?

Was passiert in Zeile 6?

Zeile 0 hat nur zwei Werte.
▶️ Run – Werte oder Fehler

Trage den Wert ein – oder Fehler, wenn der Zugriff einen IndexError auslöst.

r = [[1, 2], [3, 4, 5], [6]]
AusdruckWert oder „Fehler“
len(r)
r[1][2]
len(r[2])
r[0][1] + r[1][0]
r[3][0]
r[-1][0]
r hat 3 Zeilen mit 2, 3 und 1 Werten. Negative Indizes zählen von hinten.
🔍 Investigate

Warum ist for s in range(len(r[z])) besser als range(len(r[0]))?

Was ist an for z in range(len(m) + 1): falsch?

✏️ Modify

Der Code soll alle Werte addieren (Ergebnis 21), enthält aber drei Fehler. Korrigiere sie.

🐍 Python – Modify
Prüfe: die Grenze der äußeren Schleife, die Grenze der inneren Schleife und die Reihenfolge der Indizes.
🛠️ Make

Schreibe laengste_zeile(m): den Index der längsten Zeile (ohne max).

🐍 Python – Make
Merke dir den Index der bisher längsten Zeile und vergleiche die Längen.

🏅 Deine Badges

Verdiente Badges leuchten auf.

📊 Statistik

↺ Zurücksetzen

Alle gespeicherten Daten werden gelöscht.

📄 Arbeitsblatt erstellen

Wähle aus, welche Bereiche auf das Arbeitsblatt kommen. Es enthält dann alle … Aufgaben dieser Seite aus diesen Bereichen – mit Kästchen zum Ankreuzen, leeren Tabellen und Platz zum Schreiben, ohne Lösungen und Tipps.

Bereiche für das Arbeitsblatt