Listen, Tupel und Strings sind Beispiele für Sequenzen, aber was sind Sequenzen und was ist an ihnen so besonders? Zwei Haupteigenschaften einer Sequenz sind der Indizierungsoperator, der es uns ermöglicht, direkt auf ein bestimmtes Objekt in einer Sequenz zuzugreifen, und der Teilbereichsoperator, der es uns erlaubt, eine Teilsequenz der gesamten Sequenz zu erhalten.
Beispiel 9.5. Benutzung von Sequenzen (seq.py)
#!/usr/bin/python einkaufsliste = ['Aepfel', 'Mangos', 'Karotten', 'Bananen'] # Indizierungs-Operation print 'Position 0 ist', einkaufsliste[0] print 'Position 1 ist', einkaufsliste[1] print 'Position 2 ist', einkaufsliste[2] print 'Position 3 ist', einkaufsliste[3] print 'Position -1 ist', einkaufsliste[-1] print 'Position -2 ist', einkaufsliste[-2] # Teilbereichs-Operation auf einer Liste print 'Position 1 bis 3 ist', einkaufsliste[1:3] print 'Position 2 bis Ende ist', einkaufsliste[2:] print 'Position 1 bis -1 ist', einkaufsliste[1:-1] print 'Position Anfang bis ist', einkaufsliste[:] # Teilbereichs-Operation auf einem String name = 'swaroop' print 'Zeichen 1 bis 3 ist', name[1:3] print 'Zeichen 2 bis Ende ist', name[2:] print 'Zeichen 1 bis -1 ist', name[1:-1] print 'Zeichen Anfang bis Ende', name[:]
$ python seq.py Position 0 ist Aepfel Position 1 ist Mangos Position 2 ist Karotten Position 3 ist Bananen Position -1 ist Bananen Position -2 ist Karotten Position 1 bis 3 ist ['Mangos', 'Karotten'] Position 2 bis Ende ist ['Karotten', 'Bananen'] Position 1 bis -1 ist ['Mangos', 'Karotten'] Position Anfang bis ist ['Aepfel', 'Mangos', 'Karotten', 'Bananen'] Zeichen 1 bis 3 ist wa Zeichen 2 bis Ende ist aroop Zeichen 1 bis -1 ist waroo Zeichen Anfang bis Ende swaroop
Zuerst sehen wir, wie der Indizierungsoperator verwendet wird, um einzelne
Elemente einer Sequenz zu ermitteln. Immer wenn man wie oben bei einer
Sequenz eine Zahl in eckigen Klammern angibt, holt Python Ihnen das Element,
das dieser Position in der Liste entspricht. Denken Sie daran, dass Python
von 0 anfängt zu zählen. Daher holt einkaufsliste[0]
das
erste Element und einkaufsliste[3]
das vierte Element
der Sequenz einkaufsliste
.
Der Index kann auch eine negative Zahl sein. In diesem Fall wird die
Position vom Ende der Sequenz her gezählt. Daher bezieht sich
einkaufsliste[-1]
auf das letzte Element der Sequenz
und einkaufsliste[-2]
auf das vorletzte Element der Sequenz.
Der Teilbereichsoperator wird verwendet, indem man den Namen der Sequenz gefolgt von einem optionalen Zahlenpaar angibt, das durch einen Doppelpunkt innerhalb von eckigen Klammern getrennt wird. Beachten Sie, dass dies sehr ähnlich dem Indizierungsoperator ist, den Sie bisher verwendet haben. Denken Sie daran, dass die Zahlen optional sind, der Doppelpunkt aber nicht.
Die erste Zahl (vor dem Doppelpunkt) in der Teilbereichs-Operation bezieht sich auf die Position, wo der Teilbereich anfängt, und die zweite Zahl (nach dem Doppelpunkt) gibt an, wo der Teilbereich aufhört. Wenn die erste Zahl nicht angegeben wird, dann fängt Python am Anfang der Sequenz an. Wenn die zweite Zahl weggelassen wird, dann hört Python am Ende der Sequenz auf. Beachten Sie, dass die zurückgegebene Teilsequenz an der Startposition anfängt und direkt vor der Endposition aufhört, d.h. die Startposition ist in der Teilsequenz enthalten, aber die Endposition gehört nicht mehr dazu.
Daher gibt einkaufsliste[1:3]
einen Teilbereich der
Sequenz zurück, der bei der Position 1 beginnt, die Position 2 enthält,
aber vor der Position 3 endet, weswegen ein Teilbereich
mit nur zwei Elementen zurückgegeben wird. Entsprechend liefert
einkaufsliste[:]
eine Kopie der gesamten Liste zurück.
Man kann auch beim Teilbereichsoperator negative Positionen verwenden.
Negative Zahlen werden für Positionen vom Ende der Sequenz aus verwendet.
Zum Beispiel gibt einkaufsliste[:-1]
eine Teilsequenz
zurück, die das letzte Element der Sequenz ausschließt, aber alle anderen
Elemente der Sequenz enthält.
Experimentieren Sie mit verschiedenen Kombinationen solcher Teilbereichsangaben, indem Sie den Python-Interpreter interaktiv benutzen, d.h. die Interpreter-Eingabeaufforderung, damit Sie die Ergebnisse direkt sehen können. Das großartige an Sequenzen ist, dass man auf Tupel, Listen und Strings alle auf die gleiche Weise zugreifen kann.