Du meidest Tupel? Nicht nach diesem Beitrag!

Python hat mit Listen, Sets, Tupel und Dictionaries eine Reihe nützlicher Datenstrukturen direkt mit dabei.
Aber wusstest du, dass du auch noch Hilfe dabei kommst die Typen so effizient wie möglich zu nutzen?
In dieser kleinen Serie möchte ich dir zeigen welche das sind!

Heute geht es um Tupel.
Super hilfreich und doch oft übersehen und gemieden.
Das wird sich hoffentlich in Zukunft ändern!

Inhalt:
    Add a header to begin generating the table of contents
    Python Logo

    Mit dem collections Modul bekommst du mehrere Klassen, die dir dabei helfen sollen die verschienen Typen in Python so effizient wie möglich zu nutzen.

    Als Beispiel dient heute eine ToDo Liste.
    Aufgaben können zur Liste hinzugefügt oder auch wieder entfernt werden.

    Tupel sind unübersichtlich?

    Kurz zur Erinnerung:
    Tupel sind geordnete, unveränderliche Sequenzen.
    Daher eignen sie sich super um die Zeilen einer Tabelle darzustellen.
    Zum Beispiel in SQL Datenbanken, CSV- oder Excel-Dateien.

    Zuerst erzeugst du mal ein einfaches Tupel:

    ("Geschirrspüler ausräumen", "Küche", "Wichtig") 

    Das besteht aus drei Elementen: Element 0, Element 1, Element 2.

    Namen wären schön...

    Aber eigentlich hilft das nicht weiter. Du willst ja eher wissen was das für Elemente sind.
    Hilfreich wäre also: 

    Element 0 = Kurzbeschreibung
    Element 1 = Kategorie
    Element 2 = Priorität

    Hier kommen namedtuples ins Spiel.
    Mit namedtuples kannst du jedem Element in einem Tuple einen expliziten Namen zuordnen.
    Damit verlierst du nicht mehr den Überblick und weißt in welcher “Spalte” welche Daten stecken.

    Und so kannst du dein Tuple ganz einfach auf ein namedtuple umschreiben:

    from collections import namedtuple
     
    ToDos = namedtuple('ToDos', ['Kurzbeschreibung', 'Kategorie', 'Priorität']) 

    Du nutzt die Funktion namedtuple() um eine Klasse mit der entsprechenden Spaltenbeschreibung zu erzeugen.
    Du legst also die Spaltennamen deiner Tabelle fest.

    Hier wird der “Variablenname” (sozusagen) auch groß geschrieben. Du erzeugst hier ja eine Klasse und keine Instanz.

    So erzeugst du ein Tupel mit Namen!

    Die Funktion namedtuple() nimmt zwei Parameter entgegen:
    Zuerst den Namen der Tabelle selbst -> ToDos
    Und anschließend die Spaltennamen -> Kurzbeschreibung, Kategorie, Priorität

    Jetzt kannst du die neu erzeugte Klasse benutzen um deinen Eintrag zu erzeugen.
    In dem Fall wird die Variable auch wieder klein geschrieben.
    Jetzt erzeugst du ja eine Instanz der Klasse ToDos, die du soeben generiert hast.

    geschirr = ToDos('Geschirrspüler ausräumen', 'Küche', 'Wichtig') 

    Datenzugriff? Super einfach!

    Wenn du dir die Instanz jetzt einmal ausgeben lässt siehst du schön geordnet deine Werte da drin:

    ToDos(Kurzbeschreibung='Geschirrspüler ausräumen', Kategorie='Küche', Priorität='Wichtig') 

    Das gibt dir jetzt auch neue Möglichkeiten auf deine Daten zuzugreifen!
    Erstmal natürlich so, wie du es von einer Klasse erwarten würdest -> Einfach über das Attribut:

    geschirr.Kategorie 

    Aber da es sich ja weiterhin eigentlich um ein Tupel handelt, kannst du auch weiterhin über den Index drauf zugreifen, wie du es von einem Tupel gewohnt bist!

    geschirr[1] 

    Zusammenfassung

    Tuple sind auf den ersten Blick etwas gewöhnungsbedürftig.
    Aber einmal genauer hingesehen sind sie ein sehr hilfreicher Datentyp!

    Durch namedtuple() im collections Modul ist es leichter den Überblick zu behalten, wenn die Tupel mal größer werden.
    Es macht den ganzen Code einfach deutlich lesbarer.
    Trotzdem gehen die Vorteile von Tupel, dass sie geordnet und unveränderlich sind – nicht verloren!

    Probier es aus und sag mir deine Meinung zu namedtuple()!

    Beitragsbild - PyCharm - Erste Schritte
    mehr lesen »
    Beitragsbild Notebook in Colab hochladen
    mehr lesen »
    Beitragsbild - Arbeiten mit Dateien
    mehr lesen »

    Kommentar verfassen

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

    Scroll to Top