i

Einstieg - Geschachtelte Listen

Hochzeitsvorbereitung

Die Liste der Hochzeitsgäste ist bereits sehr lang.

  • die Eltern Ursula und Winfried der Braut
  • die Eltern Ulrike und Klaus des Bräutigams
  • die Geschwister Christiane und Tim der Braut
  • der Bruder Andreas des Bräutigams
  • Tante Ulrike und Onkel Peter mit ihren Kindern Kea, Lena und Paula
  • ...
  • die Kollegen der Braut: Simone, Anne (mit ihrer Tochter Adriana), Gerd und Bernd
  • die Kollegen des Bräutigams: Thomas (mit Freundin Sarah) und Walter (mit Freundin Tina)
  • ...

Damit bei den Vorbereitungen keine Fehler unterfaufen, soll die Gästeliste mit einem Programm verwaltet und verarbeitet werden.

Aufgabe 1

In einem ersten Ansatz werden alle Gäste der Reihe nach in eine Liste aufgenommen.

gaeste = ["Ursula", "Winfried", "Ulrike", "Klaus", ...]

Die Gästeliste soll ausgedruckt werden. Es stehen zwei Programme zur Auswahl.

Programm 1:

gaeste = ["Ursula", "Winfried", "Ulrike", "Klaus", ...]

def ausgabe(liste):
    i = 0
    while i < len(liste):
        element = liste[i]
        print(element)
        i = i + 1

# Test
ausgabe(gaeste)

Programm 2:

gaeste = ["Ursula", "Winfried", "Ulrike", "Klaus", ...]

def ausgabe(liste):
    if len(liste) == 0:
        pass
    else:
        erstesElement = liste[0]
        restListe = liste[1:]
        print(erstesElement)
        ausgabe(restListe)

# Test
ausgabe(gaeste)

(a) Vergleiche die beiden Programme. Welche Unterschiede sind erkennbar?

(b) Warum leisten beide Programme das Gewünschte? Erläutere hierzu die jeweilige Arbeitsweise.

Aufgabe 2

In einem zweiten Ansatz werden alle Gruppierungen bei der Darstellung mit Listen beibehalten.

gaeste = [
    ["Ursula", "Winfried"], 
    ["Ulrike", "Klaus"], 
    ["Christiane", "Tim"], 
    ["Andreas"], 
    ["Ulrike", "Peter", ["Kea", "Lena", "Paula"]], 
    ...
    ]

Beachte, dass eine Gruppierung hier eine Untergruppierung enthalten kann und dieses wiederum eine Untergruppierung usw..

Das folgende Programm druckt die Gästeliste aus.

def ausgabe(liste):
    if len(liste) == 0:
        pass
    else:
        erstesElement = liste[0]
        restListe = liste[1:]
        if type(erstesElement) == list:
            ausgabe(erstesElement)
        else:
            print(erstesElement)
        ausgabe(restListe)

# Test 
ausgabe(gaeste)

(a) Analysiere den Quelltext. Erkläre, wie das Programm bei der Verarbeitung der geschachtelten Listen vorgeht.

(b) Warum lässt sich im Fall geschachtelter Listen nicht so einfach ein iteratives Programm entwickeln?

Suche

v
2.2.3.1
dev.inf-schule.de/algorithmen/rekursivealgorithmen/rekursionlisten/einstieg_geschachteltelisten
dev.inf-schule.de/2.2.3.1
dev.inf-schule.de/@/page/vWAmhWbmZwB0FtPl

Rückmeldung geben