Routineaufgaben mit Python automatisieren. Al Sweigart
Читать онлайн книгу.href="#fb3_img_img_b87cb38a-a3f8-552e-95c9-7e589ea8a3b5.jpg" alt="image"/>
>>> 'The ' + spam[1] + ' ate the ' + spam[0] + '.'
'The bat ate the cat.'
Der Ausdruck 'Hello ' + spam[0] (
Wenn Sie einen Index verwenden, der über die Anzahl der Elemente in der Liste hinausgeht, gibt Python die Fehlermeldung IndexError aus:
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[10000]
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
spam[10000]
IndexError: list index out of range
Indizes können immer nur Integerwerte sein, keine Fließkomazahlen. Das folgende Beispiel ruft den Fehler TypeError hervor:
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[1]
'bat'
>>> spam[1.0]
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
spam[1.0]
TypeError: list indices must be integers or slices, not float
>>> spam[int(1.0)]
'bat'
Listen können auch andere Listen enthalten. Um auf die Elemente dieser Listen zuzugreifen, verwenden Sie Mehrfachindizes:
>>> spam = [['cat', 'bat'], [10, 20, 30, 40, 50]]
>>> spam[0]
['cat', 'bat']
>>> spam[0][1]
'bat'
>>> spam[1][4]
50
Der erste Index gibt an, welche Liste abgerufen werden soll, während der zweite das Element in dieser Liste bezeichnet. Beispielsweise führt spam[0][1] zu 'bat', dem zweiten Element in der ersten Liste. Wenn Sie nur einen Index angeben, gibt das Programm die komplette Liste an dieser Indexposition aus.
Negative Indizes
Die Indexzahlen verlaufen von null aufwärts, doch Sie können auch negative Integer als Index angeben. Dabei bezeichnet der Wert -1 den letzten Index in der Liste, -2 den vorletzten usw. Geben Sie folgenden Code in die interaktive Shell ein:
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[-1]
'elephant'
>>> spam[-3]
'bat'
>>> 'The ' + spam[-1] + ' is afraid of the ' + spam[-3] + '.'
'The elephant is afraid of the bat.'
Teillisten mithilfe von Slices abrufen
Mit einem Index können Sie ein einzelnes Element aus einer Liste abrufen, mit einem Slice dagegen mehrere Elemente in Form einer neuen Liste. Wie ein Index wird ein Slice in eckigen Klammern angegeben, allerdings in Form von zwei durch einen Doppelpunkten getrennten Integern. Beachten Sie den Unterschied:
spam[2] bezeichnet einen Index in einer Liste (ein Integer)
spam[1:4] bezeichnet einen Slice in einer Liste (zwei Integer)
Der erste Integer in einem Slice gibt die Indexposition an, bei der der Slice beginnt, der zweite Integer diejenige, bei der er endet. Der Slice enthält alle Werte vom ersten bis zum zweiten angegebenen Index, allerdings ohne den Wert dieses zweiten Index. Das Ergebnis eines Slice ist ein neuer Listenwert. Probieren Sie das wie folgt in der interaktiven Shell aus:
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[0:4]
['cat', 'bat', 'rat', 'elephant']
>>> spam[1:3]
['bat', 'rat']
>>> spam[0:-1]
['cat', 'bat', 'rat']
Als Kurzschreibweise können Sie auch auf einen oder beide Indizes vor und nach dem Doppelpunkt verzichten. Wenn Sie den ersten Index weglassen, wird 0 angenommen, also der Beginn der Liste, wenn Sie den zweiten Index weglassen, das Ende der Liste. Geben Sie Folgendes in die interaktive Shell ein:
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[:2]
['cat', 'bat']
>>> spam[1:]
['bat', 'rat', 'elephant']
>>> spam[:]
['cat', 'bat', 'rat', 'elephant']
Die Länge einer Liste mit len() abrufen
Die Funktion len() kann nicht nur die Anzahl der Zeichen in einem Stringwert nennen, sondern auch die Anzahl der Elemente in dem ihr übergebenen Listenwert. Geben Sie Folgendes in die interaktive Shell ein:
>>> spam = ['cat', 'dog', 'moose']
>>> len(spam)
3
Werte in einer Liste mithilfe des Index ändern
Auf der linken Seite einer Zuweisungsanweisung steht normalerweise ein Variablenname, etwa wie in spam = 42. Sie können jedoch auch einen Listenindex angeben, um den Wert an diesem Index zu ändern. Beispielsweise bedeutet spam[1] = 'aardvark': »Weise dem Element an Index 1 der Liste spam den String 'aardvark' zu.« Probieren Sie das wie folgt in der interaktiven Shell aus:
>>> spam = ['cat', 'bat', 'rat', 'elephant']
>>> spam[1] = 'aardvark'
>>> spam
['cat', 'aardvark', 'rat', 'elephant']
>>> spam[2] = spam[1]
>>> spam
['cat', 'aardvark', 'aardvark', 'elephant']
>>> spam[-1] = 12345
>>> spam
['cat', 'aardvark', 'aardvark', 12345]