Eine Kopie der Kurswerteliste erstellen
Achtung bei der Verarbeitung von Listen
Listen sind (in Python) veränderbare Objekte und verhalten sich manchmal anders als unveränderbare Objekte wie z.B. Zahlen. Wir verdeutlichen das in diesem Abschnitt anhand eines einfachen Kopierproblems. Mehr hierüber erfährst du im Abschnitt Exkurs - Liste als Objekt.
Eine Liste kopieren
Betrachte folgende Situation:
Mit einer Liste werden die Kurswerte eines bestimmten Zeitraums (z.B. eines Jahres) verwaltet.
Bevor neue Kurwerte hinzugefügt werden sollen, soll erst einmal eine Kopie der bereits bestehenden
Liste erzeugt werden.
Wir spielen das im Kleinen einmal hier durch.
Zum Hinzufügen von neuen Listenelementen verwenden wir die vordefinierte Listenoperation extend
.
>>> daxListe = [11058.39, 11099.35, 10944.97, 11083.2, 11492.43]
>>> daxListeNeu = daxListe
>>> daxListeNeu.extend([11473.13, 11471.26])
>>> daxListeNeu
...
>>> daxListe
...
Aufgabe 1
(a) Probiere das selbst aus. Warum ist das Ergebnis hier unbefriedigend?
(b) Führe entsprechende Experimente mit dem Online Python Tutor durch. Um alles zu sehen, musst du eventuell die Fenstergrößen verändern. Beobachte und erkläre die angezeigten Ergebnisse.
(c) Hier ein erneuter Versuch, eine Kopie einer vorgegebenen Liste zu erzeugen. Vergleiche mit der Version oben. Was ist hier anders gemacht? Achte auf alle Details.
>>> daxListe = [11058.39, 11099.35, 10944.97, 11083.2, 11492.43]
>>> daxListeNeu = daxListe[:]
>>> daxListeNeu.extend([11473.13, 11471.26])
>>> daxListeNeu
...
>>> daxListe
...
Führe auch entsprechende Experimente mit dem Online Python Tutor durch und erkläre die Ergebnisse.
(d) Noch ein Versuch, eine Kopie einer vorgegebenen Liste zu erzeugen.
>>> daxListe = [11058.39, 11099.35, 10944.97, 11083.2, 11492.43]
>>> daxListeNeu = daxListe
>>> daxListeNeu = daxListeNeu + [11473.13, 11471.26]
>>> daxListeNeu
...
>>> daxListe
...
Führe auch entsprechende Experimente mit dem Online Python Tutor durch und erkläre die Ergebnisse.