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 
# ...
X

Fehler melden

X

Suche