3. Listen#

3.1. Der abstrakte Datentyp Liste#

Listen sind in der Informatik allgegenwärtig. Man nutzt sie immer, wenn für die Verarbeitung von Daten wichtig ist, in welcher Reihenfolge sie vorliegen bzw. an welcher genauen Position (Index) ein bestimmter Wert steht.

Die wichtigsten Operationen von Listen sind in Abb. 3.1 aufgelistet 😉:

../_images/kd_liste_adt_interface_fosa.svg

Abb. 3.1 Der abstrakte Datentyp Liste als UML-Klassendiagramm (FoSa 4.3.2)#

Als Benutzer des Listen-Typs wollen wir gar nicht unbedingt wissen, wie eine Liste intern implementiert ist; es reicht, dass sie sich garantiert so verhält, wie wir es erwarten. Z.B. erwarten wir, dass nach den Operationen

namen = ["Zora", "Xenia", "Willi"]
namen.anhaengen("Vito")
namen.einfuegen(1, "Yannick")
namen.entfernen("Xenia")
namen.einfuegenVorne("Alex")

die Liste so aussieht:

3.1.1. Listen in Python#

Auch bei den Datentypen, die von einer Programmiersprache oder eine Bibliothek bereitgestellt werden, interessiert uns v.a., was wir damit tun können, nicht wie sie intern implementiert sind. Wir wissen z.B., dass der Datentyp list in Python Methoden wie append, insert, remove, index usw. bereitstellt. Damit können wir das Pseudocode-Beispiel von oben nachbauen.

# AUFGABE: Setze das obige Pseudocode-Beispiel in Python um, so dass
# die korrekte Ausgabe erzeugt wird.

namen = ["Zora", "Xenia", "Willi"]
# HIER ERGÄNZEN

print(namen)  # Erwartete Ausgabe: ['Alex', 'Zora', 'Yannick', 'Willi', 'Vito']

Lösung:

Hide code cell content
# LÖSUNG: Setze das obige Pseudocode-Beispiel in Python um, so dass
# die korrekte Ausgabe erzeugt wird.
namen = ["Zora", "Xenia", "Willi"]
namen.append("Vito")
namen.insert(1, "Yannick")
namen.remove("Xenia")
namen.insert(0, "Alex")

print(namen)  # Erwartete Ausgabe: ['Alex', 'Zora', 'Yannick', 'Willi', 'Vito']
['Alex', 'Zora', 'Yannick', 'Willi', 'Vito']