modul:m323:learningunits:lu07:aufgaben:datenstruktur

Action unknown: linkbutton

LU07.A09 - Datenstruktur begründet auswählen

Lösen Sie dieselbe Aufgabe mit drei Datenstrukturen, messen Sie alle drei und sprechen Sie eine begründete Empfehlung aus - inklusive der Fälle, in denen Ihre Empfehlung falsch wäre.

Eine Bibliothek führt eine Sperrliste. Zu jeder Ausleihe muss geprüft werden, ob das Konto gesperrt ist; bei gesperrten Konten wird zusätzlich der Sperrgrund angezeigt.

import random
random.seed(7)
 
gesperrte_konten = [(f"konto{i}", "Mahnung offen" if i % 2 else "Ausweis abgelaufen")
                    for i in range(20000)]
ausleihen = [f"konto{random.randrange(40000)}" for _ in range(5000)]
  1. Implementieren Sie pruefen(ausleihen, gesperrte) dreimal, mit gesperrte als:
    • Liste von Tupeln (wie oben)
    • Set der gesperrten Kontonummern, Grund über eine zweite Struktur
    • Dict {konto: grund}
  2. Alle drei Fassungen liefern dieselbe Liste von (konto, grund)-Paaren, in derselben Reihenfolge. Belegen Sie das mit assert.
  3. Messen Sie alle drei mit timeit. Messen Sie den Aufbau der Datenstruktur separat von der Abfrage.
  4. Erstellen Sie eine Empfehlungstabelle.
  • Ab welcher Datenmenge lohnt sich der Aufbau eines Index? Messen Sie mit 100, 2000 und 20'000 gesperrten Konten.
  • Was geht beim Wechsel von der Liste zum Set oder Dict verloren?
  • In welchem Szenario wäre die Liste trotz schlechterer Laufzeit die richtige Wahl?
  • Warum ist das Dict hier dem Set überlegen, obwohl beide O(1) sind?

Diese Aufgabe deckt das Portfolio-Artefakt D1A ab: Messung vorher/nachher plus Begründung der gewählten Datenstruktur. Übertragen Sie das Vorgehen auf eine echte Stelle in Ihrem Flask-Projekt.


© Kevin Maurizi

  • modul/m323/learningunits/lu07/aufgaben/datenstruktur.txt
  • Zuletzt geändert: 2026/09/09 11:17
  • von admin