slicing

Übersicht: Python & Blender


Lernziel

In dieser Station wird das sogenannte »Slicing« geschrieben. Es ist eine Operation, die auf alle Sequenz-Datentypen angewendet werden kann. Wozu das gut sein kann wird hier gezeigt.

Handlungsanweisungen

Aufgaben:
  1. Erstelle einen Tupel oder eine Liste mit dem folgenden Satz und speichere jedes Wort als einen Wert: »Simple is better than complex.«
  2. Gib den letzten Wert des Tupel bzw. der Liste aus.
  3. Erstelle ein Dictionary mit zehn Begriffs-Paaren Deutsch <--> Englisch.
  4. Gib die Begriffe sortiert aus.
  5. Konstruiere eine Datenstruktur welche, die Stellung einer Schachpartie speichert.
  6. Gib die Stellung in ASCII-Art aus.

Was ist slicing?

Es ist die Auswahl einer Teilmenge aus einer Sequenz, als der Aneinaderreihung von Werten. Das funktioniert mit Zeichenketten, Tupel und Listen gleichermaßen.

Ausschneiden Teilbereich von - bis:

s = "Big Bug Bunny"
teil = s[8:10]
print(s, teil)

Ausschneiden letzes Element:

s = "Big Bug Bunny"
teil = s[-1:]
print(s, teil)

Ausschneiden erstes Element:

s = "Big Bug Bunny"
teil = s[0]
print(s, teil)

Ausschneiden aller Element:

s = "Big Bug Bunny"
teil = s[:] # entspricht der Ausgabe von s als Ganzes
print(s, teil)

Verschachtelte Aufrufe

Was für die Zeichenketten gilt, kann auch auf Tupel und Listen angewendet werden. Wenn das Element eine Zeichenkette ist, kann dieses auch wieder teilweise ausgeschnitten werden:

t1 = ('Das', 'tapfere', 'Schneiderlein', 'traf', 7, 'auf', 'einen', 'Streich')
t2 = t1[2][3:7]
print(t2)

Dictionaries und slicing

Für den Datetyp Dictionary gibt es keinen Slicing-Operator! Diverse Methoden geben als Ergebnis eine Liste zurück. Über diese Listen kann dann mit for oder while iteriert werden. Auch der Slicing-Operator lässt sich dann wieder einsetzen.

pilze = {}  # ein leeres Dictionary
pilze['Steinpilz'] = ['x-mal essbar', "Mischwaelder"]
pilze['Fliegenpilz'] = ["1-mal essbar", "Nadelwaelder"]
pilze['Marone'] = ["x-mal essbar", "Mischwaelder"]
pilze['Tintling'] = ['x-mal essbar', "Wiesen und Strassenraender"]

print('Der Inhalt des Dictionary pilze:\n')

for i in pilze.keys():
    print("Pizart= %s, essbar=%s, vorkommen= %s;" % (i,
                                                     pilze[i][0],
                                                     pilze[i][1]))

Kommentare