Prozessdaten mit Tupel und Listen verwalten
Daten einer Webserver-Logdatei
wir betrachten weiterhin Daten einer Webserver-Logdatei:
131.246.0.13 - - [24/Jul/2012:12:44:21 +0200] "GET /informatik/index.html HTTP/1.1" 200 512 131.246.0.13 - - [24/Jul/2012:12:44:25 +0200] "GET /informatik/bild.png HTTP/1.1" 200 805 # ...
Datenverwaltung mit Tupeln
Daten mit einer komplexen Struktur lassen sich oft auch (in Python) als Tupel verwalten.
Zur Verdeutlichung betrachten wir noch einmal die Darstellung des Zeitstempels
[24/Jul/2012:12:44:21 +0200]
. Beachte, dass hier bei der Datendarstellung
runde Klammern benutzt werden
- im Gegensatz zu eckigen Klammern, die man bei der Listendarstellung benutzt.
>>> zeitstempel = ((24, 'Jul', 2012), (12, 44, 21), ('+', 2, 0)) >>> zeitstempel ... >>> zeitstempel[0] ... >>> zeitstempel[0][1] ... >>> zeitstempel[1] ... >>> zeitstempel[1][0] ... >>> zeitstempel[1][0:2] ... >>> zeitstempel[2][1] ...
Aufgabe 1
(a) Führe den Python-Dialog selbst aus. Vergleiche die Ergebnisse mit denen aus dem letzten Abschnitt.
(b) Der folgende Python-Dialog zeigt einen wesentlichen Unterschied zwischen Listen und Tupeln. Beschreibe diesen Unterschied.
>>> datum1 = [24, 'Jul', 2012] >>> datum1 [24, 'Jul', 2012] >>> datum1[0] = 25 >>> datum1 [25, 'Jul', 2012] >>> datum2 = (24, 'Jul', 2012) >>> datum2 (24, 'Jul', 2012) >>> datum2[0] = 25 Traceback (most recent call last): File ... datum2[0] = 25 TypeError: 'tuple' object does not support item assignment
(c) Der folgende Python-Dialog zeigt einen weiteren Unterschied zwischen Listen und Tupeln. Beschreibe auch diesen Unterschied.
>>> uhrzeit1 = [12, 44] >>> uhrzeit1 = uhrzeit1 + [1] >>> uhrzeit1 [12, 44, 1] >>> uhrzeit2 = (12, 44) >>> uhrzeit2 = uhrzeit2 + (1) Traceback (most recent call last): File ... uhrzeit2 = uhrzeit2 + (1) TypeError: can only concatenate tuple (not "int") to tuple
(d) Die Daten einer Webserver-Logdatei sollen mit Hilfe von Listen und Tupeln adäquat dargestellt werden. Was könnte man mit Tupeln erfassen, was sollte man mit Listen erfassen?
131.246.0.13 - - [24/Jul/2012:12:44:21 +0200] "GET /informatik/index.html HTTP/1.1" 200 512 131.246.0.13 - - [24/Jul/2012:12:44:25 +0200] "GET /informatik/bild.png HTTP/1.1" 200 805 # ...