Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Eine Adressliste dynamisch verändern

Zielsetzung

Im Newsletter-Programm des MSS-Leiters werden die E-Mail-Adressen sämtlicher Schülerinnen und Schüler der 11. Jahrgangsstufe mit einer Liste verwaltet. Beachte, dass die Liste mehr als 100 Elemente haben kann.

# Datenverwaltung
listeAdressen = [
    'amueller@gmx.de',
    'carla2@hotmail.org',
    'herbert.fluhr@web.de',
    'petra@dahm.de',
    'ewen@t-online.de',
    't_schmidt@web.de',
    'nicole.weber@gmx.de'
	# ...
    ]

Während der ersten Wochen des Schuljahres gibt es ständig Änderungswünsche:

Durch Schulwechsel, Umzug, freiwilliges Wiederholen etc. werden 7 Schülerinnen und Schüler neu in die 11. Jahrgangsstufe aufgenommen. Ihre E-Mail-Adressen müssen in die Liste integriert werden.

Herbert Fluhr hat sich doch für eine Ausbildung als Bankkaufmann entschieden und die Schule verlassen. Seine E-Mail-Adresse muss gelöscht werden.

Carla hat sich mal wieder eine neue E-Mail-Adresse zugelegt. Ihre alte Adresse muss durch die neue ersetzt werden.

Um den MSS-Leiter zu entlasten, sollen im Folgenden Programmeinheiten entwickelt werden, mit denen eine dynamische Veränderung einer bestehenden Liste leicht möglich ist.

Zur Vorbereitung betrachten wir zunächst zwei elementare Listenoperationen.

Zusammenfügen von Listen

Bei der Konkatenation von Listen werden diese zu einer Gesamtliste verbunden: Wenn liste1 und liste2 zwei Listen bezeichnen, dann beschreibt der Ausdruck liste1 + liste2 die Liste, die zunächst alle Elemente von liste1 und danach alle Elemente von liste2 enthält.

>>> liste1 = ['T', 'e', 'r', 'm']
>>> liste2 = ['i', 'n']
>>> liste1 + liste2
['T', 'e', 'r', 'm', 'i', 'n']

Aufgabe 1

Stelle Vermutungen auf, was an Stelle der drei Punkte steht. Überprüfe deine Vermutungen, indem du den Python-Dialog selbst ausführst.

>>> liste = []
>>> liste
[]
>>> liste = liste + ['n']
>>> liste
...
>>> liste = liste + ['t']
>>> liste
...
>>> liste = ['o'] + liste
>>> liste
...
>>> liste = liste + ['a', 'g']
>>> liste
...
>>> liste = ['M'] + liste
>>> liste
...

(b) Stelle Vermutungen auf, was an Stelle der drei Punkte steht. Überprüfe deine Vermutungen, indem du den Python-Dialog selbst ausführst.

>>> a = [1]
>>> b = [2]
>>> c = [3]
>>> a = a+b
>>> b = a+c
>>> c = c+b
>>> a
...
>>> b
...
>>> c
...

Zugriff auf Teillisten

Ein Zugriff auf eine Teilliste einer gegebenen Ausgangsliste ist wie folgt möglich: Wenn die Variable liste eine Ausgangsliste verwaltet, dann beschreibt der Ausdruck liste[i:j] die Liste, die alle Elemente der Ausgangsliste liste mit den Indices von i bis j-1 enthält. Beachte, dass diese Teilliste auch leer sein kann.

>>> liste = ['G', 'i', 'r', 'a', 'f', 'f', 'e']
>>> liste[0:2]
['G', 'i']
>>> liste[2:5]
['r', 'a', 'f']
>>> liste[1:6]
['i', 'r', 'a', 'f', 'f']
>>> liste[3:3]
[]

Die folgenden Beispiele zeigen noch einige abkürzende Schreibweisen, die die Beschreibung von Teillisten oft vereinfachen.

>>> liste = ['G', 'i', 'r', 'a', 'f', 'f', 'e']
>>> liste[3:]     # von Nummer 3 bis zum Ende der Nummerierung
['a', 'f', 'f', 'e']
>>> liste[:3]     # von Nummer 0 bis zur Nummer 2 (= 3-1)
['G', 'i', 'r']
>>> liste[:]      # von Nummer 0 bis zum Ende der Nummerierung
['G', 'i', 'r', 'a', 'f', 'f', 'e']

Aufgabe 2

Stelle zunächst Vermutungen auf, was an Stelle der drei Punkte steht. Überprüfe deine Vermutungen, indem du den Python-Dialog selbst ausführst.

>>> listeAdressen = [
    'amueller@gmx.de',
    'carla2@hotmail.org',
    'herbert.fluhr@web.de',
    'petra@dahm.de',
    'ewen@t-online.de',
    't_schmidt@web.de',
    'nicole.weber@gmx.de'
    ]
>>> listeAdressen[0:2]
...
>>> listeAdressen[2:5]
...
>>> listeAdressen[1:4]
...
>>> listeAdressen[3:3]
...
>>> listeAdressen[3:9]
...
>>> listeAdressen[0:len(listeAdressen)]
...
>>> listeAdressen[2:]
...
>>> listeAdressen[:2]
...
>>> listeAdressen[:]
...

Listenelelemente einfügen

Das Einfügen von Listenelementen am Anfang und Ende einer Liste ist einfach.

>>> listeAdressen = [
    'amueller@gmx.de',
    'carla2@hotmail.org',
    'herbert.fluhr@web.de',
    'petra@dahm.de',
    'ewen@t-online.de',
    't_schmidt@web.de',
    'nicole.weber@gmx.de'
    ]
>>> listeAdressen + ['lars-schneider@gmx.de']
['amueller@gmx.de', 'carla2@hotmail.org', 'herbert.fluhr@web.de', 'petra@dahm.de', 
'ewen@t-online.de', 't_schmidt@web.de', 'nicole.weber@gmx.de', 'lars-schneider@gmx.de']
>>> listeAdressen
['amueller@gmx.de', 'carla2@hotmail.org', 'herbert.fluhr@web.de', 'petra@dahm.de', 
'ewen@t-online.de', 't_schmidt@web.de', 'nicole.weber@gmx.de']
>>> listeAdressen = listeAdressen + ['lars-schneider@gmx.de']
>>> listeAdressen
['amueller@gmx.de', 'carla2@hotmail.org', 'herbert.fluhr@web.de', 'petra@dahm.de', 
'ewen@t-online.de', 't_schmidt@web.de', 'nicole.weber@gmx.de', 'lars-schneider@gmx.de']

Ein Einfügen von Listenelementen an einer bestimmten Stelle innerhalb einer Liste ist wie folgt möglich.

>>> listeAdressen = [
    'amueller@gmx.de',
    'carla2@hotmail.org',
    'herbert.fluhr@web.de',
    'petra@dahm.de',
    'ewen@t-online.de',
    't_schmidt@web.de',
    'nicole.weber@gmx.de'
    ]
>>> listeAdressen[0:2] + ['lars-schneider@gmx.de'] + listeAdressen[2:7]
['amueller@gmx.de', 'carla2@hotmail.org', 'lars-schneider@gmx.de', 'herbert.fluhr@web.de', 
'petra@dahm.de', 'ewen@t-online.de', 't_schmidt@web.de', 'nicole.weber@gmx.de']
>>> listeAdressen
['amueller@gmx.de', 'carla2@hotmail.org', 'herbert.fluhr@web.de', 'petra@dahm.de', 
'ewen@t-online.de', 't_schmidt@web.de', 'nicole.weber@gmx.de']
>>> listeAdressen = listeAdressen[0:2] + ['lars-schneider@gmx.de'] + listeAdressen[2:7]
>>> listeAdressen
['amueller@gmx.de', 'carla2@hotmail.org', 'lars-schneider@gmx.de', 'herbert.fluhr@web.de', 
'petra@dahm.de', 'ewen@t-online.de', 't_schmidt@web.de', 'nicole.weber@gmx.de']

Aufgabe 3

(a) Führe den Python-Dialog selbst aus. Erkläre, wie die Ergebnisse zustande kommen.

(b) Füge auf die gleiche Weise weitere Listenelemente an von dir gewählten Stellen ein. Kontrolliere jeweils die Ergebnisse.

Listenelelemente entfernen

Aus einer Liste kann man Elemente auch wieder löschen. Der folgende Python-Dialog zeigt wie das geht.

>>> listeAdressen = ['amueller@gmx.de', 'carla2@hotmail.org', 'herbert.fluhr@web.de', 'petra@dahm.de',  'b-krewer@t-online.de']
>>> listeAdressen[0:1] + listeAdressen[2:5]
['amueller@gmx.de', 'herbert.fluhr@web.de', 'petra@dahm.de', 'b-krewer@t-online.de']
>>> listeAdressen
['amueller@gmx.de', 'carla2@hotmail.org', 'herbert.fluhr@web.de', 'petra@dahm.de', 'b-krewer@t-online.de']
>>> listeAdressen = listeAdressen[0:1] + listeAdressen[2:5]
>>> listeAdressen
['amueller@gmx.de', 'herbert.fluhr@web.de', 'petra@dahm.de', 'b-krewer@t-online.de']

Aufgabe 4

(a) Führe den Python-Dialog selbst aus. Erkläre, wie die Ergebnisse zustande kommen.

(b) Wie kann man das erste / letzte Listenelement löschen? Teste deine Ideen mit geeigneten Python-Dialogen.

X

Fehler melden

X

Suche