A Byte of Python

Sequenzen

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.

Benutzung von Sequenzen

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[:]
				
				

Ausgabe

				
$ 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
				
				

So funktioniert es

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.