Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Stapel und Warteschlangen

Nach dieser Lektion: Ich kann einen Stapel und eine Warteschlange mit Listen benutzen.

Lektion, 50 Min.4 BefehleJupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Die Zurück-Taste und die Schlange an der Kasse

Ein Stapel (englisch stack) und eine Warteschlange (englisch queue) sind zwei Arten, Daten zu ordnen. Beim Stapel kommt das Letzte zuerst heraus, bei der Warteschlange das Erste. Mit beiden löst man viele Aufgaben, vom Rückgängig-Knopf bis zu Druckaufträgen.

Die Zurück-Taste deines Browsers merkt sich die Seiten als Stapel. Die Kasse im Supermarkt arbeitet wie eine Warteschlange.

Am Ende dieser Lektion

Notiz

Ich kann einen Stapel und eine Warteschlange mit Listen benutzen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Stapeleine Datenstruktur: Das zuletzt Hinzugefügte kommt zuerst heraus
Warteschlangeeine Datenstruktur: Das zuerst Hinzugefügte kommt zuerst heraus
Pushetwas oben auf den Stapel legenappend
Popdas oberste Element vom Stapel nehmenpop()
Datenstruktureine Art, Daten zu speichern und zu ordnen

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein Stapel: zuletzt hinein, zuerst heraus

Stell dir einen Stapel Teller vor. Du legst oben einen Teller drauf und nimmst oben einen weg. An die unteren kommst du erst, wenn die oberen weg sind.

Das Prinzip heißt LIFO, englisch last in, first out. In Python ist append(x) das Push und pop() ohne Zahl das Pop.

Beispiel: Seiten im Browser-Verlauf

AktionStapel danach (unten bis oben)Ergebnis
Push startstart
Push shopstart, shop
Push kassestart, shop, kasse
Popstart, shopkasse (die letzte Seite)
Popstartshop

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Bevor du anfängst

Notiz

Drück oben in der Leiste auf Lab starten und warte, bis JupyterLab läuft. Die Schaltflächen Ausführen tippen ihren Befehl in das Terminal neben dem Lab. Jeder startet Python im Container jupyter.

Einen Stapel im Lab benutzen

Der erste Befehl schreibt ein kleines Programm in stapel.py. Es legt drei Seiten auf einen Stapel und nimmt zwei wieder herunter. Danach dreht es das Wort Banane mit einem Stapel um. Der zweite Befehl startet es.

Das Programm in stapel.py schreiben

Befehl
docker exec jupyter sh -c "printf 'verlauf = []\nverlauf.append(\"start\")\nverlauf.append(\"shop\")\nverlauf.append(\"kasse\")\nprint(verlauf.pop())\nprint(verlauf.pop())\nprint(verlauf)\nstapel = []\nfor buchstabe in \"Banane\":\n    stapel.append(buchstabe)\numgekehrt = \"\"\nwhile len(stapel) > 0:\n    umgekehrt = umgekehrt + stapel.pop()\nprint(umgekehrt)\n' > stapel.py"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den Stapel starten

Befehl
docker exec jupyter python3 stapel.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine Warteschlange: zuerst hinein, zuerst heraus

In einer Schlange kommt zuerst dran, wer zuerst da war. Das Prinzip heißt FIFO, englisch first in, first out.

In Python hängst du hinten mit append(x) an. Vorn nimmst du mit pop(0) das erste Element heraus. Die 0 sagt: die Stelle ganz vorn.

Beispiel: Druckaufträge in der Schule

AktionSchlange danach (vorn bis hinten)Ergebnis
Ana schickt einen AuftragAna
Ben schickt einen AuftragAna, Ben
Der Drucker nimmt den nächstenBenAna wird gedruckt
Cem schickt einen AuftragBen, Cem

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Das Programm in schlange.py schreiben

Befehl
docker exec jupyter sh -c "printf 'schlange = [\"Ana\", \"Ben\", \"Cem\"]\nprint(schlange.pop(0))\nschlange.append(\"Dilara\")\nprint(schlange)\n' > schlange.py"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Warteschlange starten

Befehl
docker exec jupyter python3 schlange.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele verwechseln pop() und pop(0). pop() nimmt das letzte Element, das ist ein Stapel. pop(0) nimmt das erste, das ist eine Schlange. Nimm bei einer leeren Liste nichts heraus, sonst gibt es einen Fehler. Prüfe vorher len(liste) > 0.

Mit einem Stapel Klammern prüfen

Ein Taschenrechner oder ein Editor prüft mit einem Stapel, ob jede öffnende Klammer eine passende schließende hat. Öffnende Klammern kommen auf den Stapel. Bei einer schließenden nimmst du die oberste herunter.

Passen beide nicht zusammen oder ist der Stapel leer, ist es falsch. Am Ende muss der Stapel leer sein.

Beispiel: der Text (a[b]) Schritt für Schritt

ZeichenWas passiertStapel danach
(Öffnend: Push(
aKeine Klammer: nichts(
[Öffnend: Push( [
bKeine Klammer: nichts( [
]Schließend: Pop gibt [, passt(
)Schließend: Pop gibt (, passtleer, also richtig

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Weiterführend: der Rückgängig-Knopf

Ein Zeichenprogramm merkt sich jede Aktion auf einem Stapel. Wie funktioniert dann Rückgängig? Was bräuchte der Knopf Wiederholen als zweiten Stapel? Skizziere, was bei fünf Aktionen und zwei Rückgängig auf jedem Stapel liegt.

Über dieses Lab und seinen Quellcode: JupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.