fbpx

Du meidest Tupel? Nicht nach diesem Beitrag!

Inhalt
    Add a header to begin generating the table of contents

    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!
    Hier wird es um Tupel gehen und wie schön man mit ihnen arbeiten kann.

    Super hilfreich und doch oft übersehen und gemieden.
    Das wird sich hoffentlich in Zukunft ändern!

    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.

    NamedTuple: 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 kleingeschrieben.
    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 darauf zugreifen, wie du es von einem Tupel gewohnt bist!

    geschirr[1] 

    Zusammenfassung

    Tupel 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()!

    Ingo Janßen

    Ingo Janßen

    Lerne nicht einfach programmieren. Löse Probleme und automatisiere Aufgaben!

    Das könnte dich auch interessieren

    Nach oben scrollen
    Newsletter Popup Form

    Keine Inhalte mehr verpassen?

    Melde dich direkt für den "Code-Kompass" an und erhalte nützliche Tipps und Informationen direkt in deinen Posteingang.