Читать книгу Routineaufgaben mit Python automatisieren - Al Sweigart - Страница 132

Der Datentyp für Tupel

Оглавление

Der Datentyp für Tupel ist fast identisch mit dem für Listen, wobei jedoch zwei wichtige Unterschiede bestehen. Erstens werden Tupel in runden statt in eckigen Klammern angegeben, wie das folgende Beispiel zeigt:

>>> eggs = ('hello', 42, 0.5)

>>> eggs[0]

'hello'

>>> eggs[1:3]

(42, 0.5)

>>> len(eggs)

3

Der Hauptunterschied zwischen Listen und Tupeln besteht jedoch darin, dass Tupel ebenso wie Strings unveränderbar sind. Es ist nicht möglich, ihre Werte zu bearbeiten, zu entfernen oder neue Werte anzuhängen. Der folgende Code führt daher zu der Fehlermeldung TypeError:

>>> eggs = ('hello', 42, 0.5)

>>> eggs[1] = 99

Traceback (most recent call last):

File "<pyshell#5>", line 1, in <module>

eggs[1] = 99

TypeError: 'tuple' object does not support item assignment

Wenn sich in dem Tupel nur ein einziger Wert befindet, können Sie das dadurch kennzeichnen, dass Sie in den Klammern ein Komma hinter diesem Wert angeben. Anderenfalls würde Python davon ausgehen, dass Sie einfach nur einen Wert in Klammern geschrieben haben. Anhand des Kommas kann Python erkennen, dass es sich um einen Tupelwert handelt. (Im Gegensatz zu anderen Programmiersprachen ist es in Python zulässig, ein Komma hinter das letzte Element in einer Liste oder einem Tupel zu setzen.) Um den Unterschied zu erkennen, geben Sie in der interaktiven Shell folgende type()-Funktionen ein:

>>> type(('hello',))

<class 'tuple'>

>>> type(('hello'))

<class 'str'>

Mithilfe von Tupeln machen Sie für die Leser des Codes deutlich, dass diese Folge von Werten nicht geändert werden soll. Wenn Sie also eine geordnete Folge von Werten brauchen, die sich nie ändern, dann verwenden Sie dafür ein Tupel. Der zweite Vorteil von Tupeln gegenüber Listen besteht darin, dass Python aufgrund ihrer Unveränderbarkeit einige Optimierungen vornehmen kann, sodass der Code ein wenig schneller ausgeführt wird als bei der Verwendung von Listen.

Routineaufgaben mit Python automatisieren

Подняться наверх