-
Notifications
You must be signed in to change notification settings - Fork 0
04 Collections
Ein Hauptzweck von Programmierung ist es, wiederkehrende Aufgaben automatisiert ausführen. Dazu ist es nützlich, wenn wir diese Aufgaben zuerst auflisten und dann der Reihe nach abarbeiten.
Eine Liste (array oder list) ist immer mit zwei eckigen Klammern gekennzeichnet. Sie kann eine beliebige Anzahl an Einträgen (elements) enthalten, die sich dynamisch verändern lassen.
woche = ['Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag']Auch für Listen gibt es zahlreiche mögliche Operationen. In der Liste woche fehlen der Samstag und der Sonntag. Im Beispiel sehen wir dies sofort, doch in einem grösseren Skript ist es manchmal sinnvoll zu prüfen, ob ein bestimmtes Element in einem Array vorhanden ist:
'Sonntag' in wocheWir fügen das Wochenende noch hinzu:
woche.append('Samstag')
woche.append('Sonntag')Ein Eintrag in einer Liste kann auch direkt angesprochen werden, wenn wir seine Position (Index) innerhalb der Liste kennen. Der Mittwoch ist der dritte Wochentag, deshalb steht er an dritter Stelle.
Da in Programmiersprachen die Nummerierung nicht bei eins, sondern bei null beginnt, hat der Mittwoch den Index 2.
woche[2]Natürlich lassen sich Listen auch sortieren. Wir überschreiben die Variable woche mit einer sortierten Liste der Wochentage.
woche = sorted(woche)An Indexposition 2 steht nun nicht mehr der Mittwoch, sondern der Freitag. Aus einer Liste entfernt werden könne Einträge über ihre Indexposition oder über ihren Wert:
woche.pop(2) # entfernt den Eintrag mit Index 2, also den Freitag
woche.remove('Mittwoch') # entfernt den MittwochJeder Text (string) ist gleichzeitig eine Liste seiner einzelnen Buchstaben. Dies wird deutlich, wenn wir versuchen ein einzelnes Wort zu sortieren:
lt = sorted('swisstopo')Eine Liste kann mehrere identische Elemente haben. Die einfachste Möglichkeit, Duplikate aus einer Liste zu entfernen, ist sie in ein Set umzuwandeln. Ein Set ist im Gegensatz zu einer Liste weniger dynamisch und lässt keine doppelten Einträge zu.
lt = set(lt)Nun können wir beispielsweise bestimmen, wie viele verschiedene Buchstaben im Wort swisstopo vorkommen:
len(lt)Sehr hilfreich sind Sets bei Operationen der Mengenlehre:
set('Landestopografie') & set('swisstopo') # gemeinsame Buchstaben
set('Landestopografie') ^ set('swisstopo') # nur in einem der beiden Begriffe
len(set('Landestopografie') | set('swisstopo')) # Anzahl verschiedener Buchstaben insgesamtEin Tupel ist eine unveränderliche Liste mit einer fixen Anzahl an Elementen. Sinnvoll ist dies z.B., wenn wir die Koordinaten eines Punktes in einer Liste – oder eben in einem Tupel – speichern wollen:
bern2d = (600000, 200000)
bern3d = (600000, 200000, 500)Tupeln werden wir auch bei der Berechnung von Zeiten und Daten wieder begegnen.
Dictionaries sind tatsächlich so etwas wie Nachschlagewerke: Wird nach einem bestimmten Schlüsselwort (key) gefragt, erhält man den dafür hinterlegten Wert (value) zurück.
Dictionaries werden mit geschwungenen Klammern gekennzeichnet. Key und Value werden mit einem Doppelpunkt getrennt.
anreden = {'de':'hoi', 'fr':'salut', 'it':'ciao'}Alle Elemente in einem Dictionary können spezifisch abgefragt werden:
anreden['it'] # liefert den für den Key 'it' hinterlegten Wert
anreden.keys() # liefert eine Liste mit allen Schlüsselwörtern
anreden.values() # Liste mit allen Werten
anreden.items() # verschachtelte Liste mit Key/Value-TupelDas letzte Beispiel zeigt, dass Listen, Sets und Dictionaries eng verwandt sind und vielseitig miteinander kombiniert und ineinander verschachtelt (nested) werden können.
Falls ein neuer Eintrag in das Dictionary aufgenommen werden soll, geht das so:
anreden['en'] = 'hello'Finde mehr interaktive Beispiele zu den meisten Kapiteln als Python Notebook.