Ein sehr wichtiger Datentyp mit vielen Anwendungsmöglichkeiten sind Listen in Python. Diese Datenstruktur gibt es in jeder Programmiersprache mehr oder weniger abgewandelt, häufig in Form von sogenannten Arrays. Jeder sollte meiner Meinung nach bereits zu Anfang seiner Programmierkarriere etwas über Listen oder Arrays lernen. Falls du Lust hast mehr über Listen in Python zu erfahren, dann lies weiter. In diesem Artikel befassen wir uns mit den grundlegenden Funktion von solchen Listen, einfach erklärt und Schritt für Schritt.
Definition: Was sind Listen in Python?
Listen gehören zu den eingebauten Datentypen und bilden eine eigene Klasse in Python. Das heißt, Listen kannst du in Python verwenden ohne irgendwelche zusätzlichen Module zu laden. Bei Listen handelt es sich um eine Datenstruktur, die Daten geordnet speichert. Typischerweise enthalten Listen Objekte, die ähnliche Eigenschaften aufweisen.
Das hört sich alles kompliziert an, ist es aber gar nicht.
Denk einfach an eine alltägliche Liste wie deine Einkaufsliste. Anstatt wahllos einzelne Zettel mit Wörtern wie Banane, Joghurt und Hafermilch in deiner Wohnung rumliegen zu lassen, schreibst du all diese Lebensmittel auf einen einzigen Zettel.
Darüberhinaus schreibst du die Begriffe nicht wahllos, kreuz und quer, sonder untereinander auf diesen Zettel. Du machst dir also eine Liste. Außerdem ist diese Liste geordnet. Egal aus welchem Grund, einer der Begriff wird ganz zu Anfang auf der Liste zu finden sein und einer ganz zum Schluss. Damit hast du deine Einkaufsliste sortiert.
In Python sieht das Ganze so aus.
Ich habe eine Liste erstellt mit dem Namen einkaufsliste, indem ich zwei eckige Klammern [ ] verwendet habe. Außerdem habe ich in die eckigen Klammern meine Daten eingetragen, diese werden durch Kommata getrennt.
Wichtig: Um jedes Element der Einkaufsliste habe ich Anführungsstriche ‚ gemacht, da es sich um Wörter handelt. Diese zählen in Python zum Datentyp string und müssen links und rechts jeweils ein, zwei oder drei ‚ Anführungsstriche haben.
Unterschiedliche Datentypen innerhalb einer Liste
Unser Beispiel einkaufsliste beinhaltet drei Wörter, also drei strings. Eine Liste kann aber auch völlig unterschiedliche Datentypen beinhalten. Meistens braucht man aber Listen, um gewisse ähnliche Werte zu speichern.
Im folgenden Beispiel siehst du eine Liste mit dem Namen liste, die sowohl strings, als auch integers und floats enthält.
Listen erstellen
Bevor wir uns mit all den tollen Eigenschaften von Listen auseinandersetzen können, müssen wir erstmal wissen wie man eine Liste erstellt.
Dafür gibt es verschiedene Möglichkeiten. In diesem Beitrag möchte ich dir drei nennen. (Die vierte Möglichkeit via list comprehensions werde ich in einem späteren fortgeschrittenen Artikel behandeln.)
Möglichkeit 1: Zum Erstellen einer Liste schreibst du einfach zwei eckige Klammern [ ]. Du kannst erstmal einfach die Liste leer lassen und später mit Inhalt befüllen.
Am besten speicherst du deine Liste in einer Variablen, der du einen Namen gibst, den du dir merken kannst. Hier wähle ich das Wort liste als Variablenname.
liste = [ ]
Möglichkeit 2: Eine zweite Möglichkeit eine leere Liste zu erstellen ist mit der Funktion list(). Genau wie oben kannst du eine leere Liste mit list() erzeugen und in einer Variablen speichern.
Ich zeige dir hier ein Beispiel für beide Möglichkeiten.
Wie du sehen kannst, sehen liste1 und liste2 genau gleich aus auf der Konsole. Nun hast du zwei Möglichkeiten gelernt Listen zu erstellen.
Möglichkeit 3: Falls du bereits zu Beginn einige Daten für deine Liste hast, dann erstellst du eine Liste indem du deine Daten direkt in die eckigen Klammern einträgst. Die einzelnen Einträge musst du mit Komma abtrennen.
Angenommen wir wollen die Zahlen 1 bis 5 in einer Liste speichern, dann könnten wir das so schreiben.
Indizierung von Listen
Wichtig ist, dass die einzelnen Elemente einer Liste auch einzeln angewählt werden können. Die Elemente erhalten eine automatische Nummerierung, die bei 0 anfängt.
In unserem vorherigen Beispiel ist die Zahl 1 also auf Platz 0 und die Zahl 2 auf Platz 1 und so weiter, bis zur Zahl 5, die auf Platz 4 steht.
Das kann manchmal ganz schön verwirrend sein. Wichtig ist nur, dass du dir merkst, dass es bei 0 los geht.
Die einzelnen Einträge kannst du dir mithilfe eckiger Klammern ausgeben lassen, also liste[0] im vorherigen Beispiel ist die Zahl 1. Nochmal, du schreibst den Namen der Liste und dann direkt dahinter ohne Leerzeichen die eckigen Klammern mit dem Index (der Platzierung) des Eintrags um den es geht.
Dazu möchte ich dir noch sagen, dass eine Liste auch von hinten durchgezählt werden kann. Das heißt, der Eintrag mit dem Index -1 ist der hinterste, dann der Eintrag mit -2 der zweite von rechts und so weiter.
Auf folgendem Bild habe ich die Liste von vorhin nochmal dargestellt und zwei Einträge auf der Konsole anzeigen lassen. Versuch dir doch mal selber zu überlegen, ob du weißt was gemeint ist.
Listen-Operationen oder „Was man alles mit Listen machen kann.“
Wenn du bis hierher alles verstanden hast, dann kennst du dich mit den Basics über Listen in Python bereits ausreichend aus. Nun geht es einen Schritt weiter. Welche besonderen Operationen kann man denn mit Listen so anstellen?
Wir können uns vorstellen, dass wir im Nachhinein Einträge aus einer Liste entfernen oder neue hinzufügen möchten. Das ist in der Tat möglich, da es sich bei Listen um einen veränderlichen Datentyp handelt (mutable type). Was genau der Unterschied zwischen veränderlichen und nicht-veränderlichen Objekten ist, möchte ich hier nicht weiter ausführen.
Listen sind glücklicherweise veränderlich. 🎉
Hier ist eine Tabelle mit all den Befehlen, die du auf deine Liste anwenden kannst. Im Nachhinein schauen wir uns dazu einige Beispiele an.
len(liste) | Gibt die Länge der Liste zurück, also Anzahl der Einträge. |
liste[i] | Eintrag mit Index i der Liste liste wird zurückgegeben. |
liste[i:j] | Gibt Einträge von Index i bis einschließlich Index j-1 in Liste liste zurück. Es wird sozusagen ein Ausschnitt „slice“ aus der Liste herausgeschnitten. Achtung, der letzte Index j ist nicht im „slice“ enthalten. Siehe nachfolgendes Beispiel. |
liste.pop() oder liste.pop(i) | Der erste Befehl entfernt den letzten Eintrag und der zweite Befehl entfernt den Eintrag mit Index i. |
liste.remove(x) | Entfernt den Eintrag aus der Liste in dem das erste Mal der Wert x steht. |
liste.append(x) | Hängt einen Eintrag x an die Liste an |
Das sind meiner Meinung nach für den Anfang die wichtigsten Operationen, die man mit Listen in Python machen kann und wissen sollte. Es gibt natürlich noch mehr, aber mit den genannten kommst du schon ziemlich weit beim Programmieren.
Listen sortieren in Python
Natürlich kannst du die Werte innerhalb deiner Listen auf- und absteigend sortieren. Du kannst sogar ganz eigene Kriterien erfinden nach denen deine Listen sortiert werden sollen.
Wie genau das funktioniert erkläre ich in diesem Beitrag ausführlich, um hier nicht den Rahmen zu sprengen.
Operationen „slice“ und len() für Listen in Python
Schauen wir uns in folgenden Bildern jeden Befehl einmal an. Ich werde erneut die Liste von vorhin mit den Zahlen 1 bis 5 verwenden.
In Zeile 2 sage ich mit print(len(liste)), dass die Länge der Liste auf der Konsole erscheinen soll. Schauen wir nach rechts, steht dort eine 5. Stimmt, die Liste hat fünf Einträge.
Weiterhin habe ich in Zeile 3 den Befehl print(liste[3]) verwendet. Und der Eintrag mit Index 3 ist tatsächlich die Zahl 4, was uns rechts angezeigt wird.
Nun noch der letzte Befehl, der „slice“. Ich schreibe print(liste[1:3]) und erhalte eine Liste mit den Einträgen 2 und 3, also [2,3] zurück. Das ist erstmal eine komische Sache. Der Ausschnitt aus der Liste beinhaltet nicht die Einträge mit Index 1 bis 3, sondern von Index 1 bis kleiner als 3. Und das ist der Index 2. Verwirrend, ich weiß. 🙃
Operationen append, pop und remove für Listen in Python
Weiterhin schauen wir uns die gleiche Liste noch einmal an und wenden die übrigen Operationen aus der Tabelle darauf an.
Zuerst nutzen wir den Befehl liste.append(3) in Zeile 3, um eine 3 an die ursprüngliche Liste anzuhängen.
Wichtig: Objekte (hier meine Liste mit dem Namen liste) werden zuerst geschrieben, dann kommt ein Punkt und dann die Methode, die auf das Objekt angewendet wird. Also wenn deine Liste einen anderen Namen hat als meine Liste, dann musst du auch was anderes vor der Punkt schreiben.
Schauen wir uns nun an, was der Befehl „pop“ bewirkt.
Wie grad eben fügen wir zuerst eine 3 hinten an die Liste an. Nun gebe ich liste.pop() ein. Wir können rechts sehen, dass du der letzte Eintrag, die zugefügte 3 entfernt wurde.
Im nächsten Schritt wird der erste Eintrag, also der Eintrag mit Index 0, entfernt durch liste.pop(0). Die Zahl in der Klammer bei .pop() bezieht sich auf den Index des Eintrags der gelöscht werden soll.
Außerdem kann Python dir den Wert, der mit .pop() entfernt wurde zurückgeben und du kannst ihn speichern und weiter verwenden. Das ist mit .remove() nicht möglich.
Nun wollen wir „remove“ ausprobieren.
Gleiches Spiel wie davor. Die Zahl 3 wird zuerst angehängt an die Liste mit dem Namen liste. Danach haben wir mit liste.remove(3) die erste 3 entfernt, die in der Liste auftaucht. Das ist wirklich wichtig zu merken: Es ist nur die erste Drei in der Liste, die durch liste.remove(3) entfernt wird.
Wenn du versuchst ein Element aus deiner Liste zu entfernen, welches gar nicht in deiner Liste ist, so wirst du auf der Konsole einen ValueError angezeigt bekommen. Python ist mit den Fehlermeldungen auch relativ genau. Es steht dann sowas wie „element x not in list“ dabei. Somit weißt du ganz genau, wo dein Fehler lag.
Weitere Anmerkungen zu Listen in Python und Fazit
In diesem Artikel haben wir lediglich eine Liste mit lauter ganzen Zahlen, also integers, als Einträge gesehen und eine Liste, die strings enthielt. Natürlich kann eine Liste auch noch andere Datentypen beinhalten.
Man kann sogar eine Liste in einer Liste speichern. 🤓 Damit der Artikel nicht zu lang wird, werde ich das und einiges mehr über Listen in Python oder ähnliche Datentypen in einem zukünftigen Artikel schreiben.
Um die Anfänger*innen unter euch nicht zu überfordern, habe ich es bei den für mich wichtigsten Inhalten belassen. Mehr zu sequence types und lists hier in der offiziellen Python Dokumentation (auf englisch).
Am besten wirst du all diese Dinge über Python und Programmieren im Allgemeinen lernen, wenn du es selbst versuchst. Also öffne den Python-Editor auf deinem Computer oder benutze einen Online-Editor, um mit dem Coden durchzustarten. Hier findest du noch viele andere spannende Artikel über Python, um deine Skills zu verbessern.
Lass gerne ein Kommentar mit Fragen da! Abonniere außerdem den MINT first. Newsletter mit monatlichen Übungsaufgaben:
Du kannst so super erklären… Das macht mir wieder neuen Mut, mich ans Programmieren zu wagen 🙂 Vielen Dank fürs Teilen!
Liebe Luise,
Vielen Dank für deinen Kommentar! Freut mich zu hören, dass dir mein Content gefällt. Bleib dran mit dem Programmieren, es lohnt sich! 🚀
Ja alles schön. Aber das Deutsch haut mich immer wieder raus. Es heißt einfach nicht „einer Variablen“ (es ist ja kein Adjektiv (mehr), sondern ein Substantiv. Also „einer Variable“, genau wie „einer Lampe“. einer „Waage“.
Lieber Jochen, vielen Dank für deinen Kommentar! Ich dachte für den Dativ des Substantivs „Variable“ ist sowohl „einer Variable“, als auch „einer Variablen“ richtig. Vor allem während meiner Zeit an der Uni ist mir in der mathematischen Fachliteratur häufiger die Version „in der Variablen x“ begegnet. Muss ich nochmal recherchieren, danke für den Hinweis!
Liebe Grüße!