Python Lists werden dafür genutzt mehrere Elemente in einer einzigen Variable zu speichern. Sie sind eine von insgesamt vier Datenstrukturen, die bei Python bereits vorinstalliert sind. Neben der Liste zählen dazu auch die Tuple, das Set und das Dictionary.
Eine Python List definieren wir, indem wir die Elemente in eckigen Klammern schreiben. Wir können in einer Liste Elemente mit unterschiedlichen Datentypen speichern. Eine zweite Möglichkeit zur Erstellung von Listen ist durch Aufruf des “list()” Befehls. Dazu müssen die Elemente in doppelten, runden Klammern geschrieben sein. Diese Schreibweise wird jedoch eher selten genutzt.
Wie kann man Listenelemente abrufen?
Die Elemente einer Python List haben einen Index, der für jedes Element die Reihenfolge festlegt. Die einzelnen Elemente einer Liste können über ihren entsprechenden Index aufgerufen werden. Hierbei muss natürlich beachtet werden, dass unser Computer bei 0 anfängt zu zählen. Das erste Elemente der Liste hat also den Index 0. Eine Liste in Python hat dabei immer nur numerische Indizes, die bei Null starten. Diese können auch nicht verändert werden und beispielsweise durch Indizes in Textform ersetzt werden.
Über den Index ist es auch möglich das letzte Element der Liste aufzurufen, ohne die Länge der Liste zu kennen und somit den konkreten Index. Mithilfe des negativen Index können wir Objekte aus der Liste von hinten beginnend aufrufen. Bei dieser Zählweise beginnen wir wiederum bei 1 und nicht bei 0.
Wenn wir nicht nur einzelne Elemente der Liste abfragen wollen, sondern einen kompletten Bereich, können wir diesen definieren, indem wir den Anfangs- und Endindex angeben. Dabei ist zu beachten, dass der Anfangsindex Teil der Ausgabe ist, der Endindex hingegen nicht.
Auffallend ist hierbei, dass die Abfrage eines Listenbereichs immer eine Liste als Ergebnis liefert, auch wenn die Python List nur ein Element hat.
Diese Abfrage lässt sich auch ohne Angabe des Endindex ausführen. Hierfür gibt es zwei Möglichkeiten:
Bei der ersten Möglichkeit steht in eckigen Klammern der Anfangsindex und dann ein Doppelpunkt. In unserem Beispiel liefert dies das zweite Element und alle anderen Elemente der Liste, die nach dem zweiten Element kommen, egal wie viele Elemente noch folgen, also “Tokyo”, “Montreal” und “Berlin”
Bei der zweiten Variante steht in eckigen Klammern zuerst ein Doppelpunkt und dann der Anfangsindex. In diesem Fall erhalten wir aus der Python List alle Elemente, die vor dem dritten Element der Liste stehen, also “New York” und “Tokyo”.
Als Hilfestellung für diese Abfragearten kann man folgenden, kleinen Algorithmus verwenden:
- Setze den Cursor vor(!) das Element, das durch die Zahl definiert wird.
- Wenn der Doppelpunkt hinter der Zahl steht, also rechts daneben, dann besteht das Ergebnis aus einer Liste mit allen Elementen, die rechts vom Cursor stehen. Wenn der Doppelpunkt vor der Zahl steht, also links daneben, dann besteht das Ergebnis aus einer Liste mit allen Elementen, die links vom Cursor stehen.
Für unsere erste Abfrage “list_1[1:]” setzen wir den Cursor vor das zweite Element, also vor “Tokyo”. Da der Doppelpunkt rechts von der 1 steht, müssen wir im Ergebnis alle Elemente nutzen, die rechts vom Cursor steht. Somit besteht das Ergebnis aus einer Python List mit den Elementen “Tokyo”, “Montreal” und “Berlin”.
Wie kann man Listenelemente ändern?
Wenn wir einzelne oder mehrere Elemente einer Python List ändern wollen, rufen wir sie wie oben beschrieben haben auf und definieren, deren Wert einfach neu.
Gleichzeitig können wir ein Element auch mit der “insert()” Methode an einer beliebigen Stelle der Liste einfügen, ohne dass wir dabei einen bestehenden Eintrag ändern. Der Index der folgenden Werte erhöht sich entsprechend um 1. Wenn wir einfach an das Ende der Liste ein Element anhängen wollen, können wir das mit der “append()” Methode tun.
Natürlich können wir auch Werte aus einer Python List entfernen anstatt sie zu überschreiben. Dazu gibt es die Methoden “pop()” und “remove()”. Der Unterschied zwischen den Methoden ist, dass “pop()” den Index als Eingabe nutzt und “remove()” das konkrete Element.
Wie können Elemente in einer Liste sortiert werden?
Obwohl die Elemente in der Liste sortiert sind, kann man sie alphabetisch oder numerisch sortieren. Dadurch ändert sich jedoch ihr Index, also die Anordnung innerhalb der Liste:
Die Anordnung in einer Python Liste lässt sich auch umdrehen, also dass von Z nach A bzw. von großer Zahl zu kleiner Zahl sortiert wird. Dazu benötigt man lediglich den zusätzlichen Parameter “reverse = True”:
Der Sortieralgorithmus funktioniert jedoch nur, wenn die Python Liste aus Daten mit einem einheitlichen Datentyp besteht. Eine Mischung aus Zahlen und Strings führt zu einem sogenannten “TypeError”:
Was sind die Unterschiede zwischen NumPy Arrays und Python Lists?
Je nach Quelle gibt es mehrere, grundlegende Unterschiede zwischen NumPy Arrays und Python Lists. Zu den am häufigsten genannten gehören:
- Speicherverbrauch: Arrays sind so programmiert, dass sie einen gewissen Teil im Speicher für sich beanspruchen. Dort liegen dann alle Elemente des Arrays. Die Elemente einer Liste können hingegen weit im Speicher voneinander entfernt sein. Dadurch verbraucht eine Liste mehr Speicher als das identische Array.
- Geschwindigkeit: Auch aufgrund des geringeren Speicherverbrauchs können Arrays deutlich schneller verarbeitet werden als Listen. Das kann bei Objekten mit mehreren Millionen Elementen einen signifikanten Unterschied machen.
- Funktionalitäten: Arrays bieten deutlich mehr Funktionalitäten, beispielsweise ermöglichen sie elementweise Operationen, während Listen das nicht unterstützen.
Wie kann man mit verschachtelten Listen arbeiten, also mit Listen aus Listen?
Eine Liste kann nicht nur aus Einzelelementen bestehen, sondern kann auch wiederum Listen enthalten. Diese sogenannte verschachtelte Liste ist eine leistungsstarke Möglichkeit um mehrdimensionale Strukturen, wie Matrizen, Tabellen oder andere hierarchische Daten darzustellen. In diesem Abschnitt werden grundlegende Befehle erklärt, um mit verschachtelten Listen arbeiten zu können.
Erstellen von Verschachtelten Listen
Das Erstellen einer Verschachtelten Liste ist einfach und sie kann genauso definiert werden wie eine normale Python List. Als Elemente werden dafür jedoch nicht einzelne Elemente genutzt, sondern wiederum andere Listen.
Diese erstellte Liste kann als Repräsentation einer Matrix verstanden werden mit drei Zeilen und drei Spalten.
Zugriff auf Elemente in Verschachtelten Listen
Um Elemente aus dieser Python List abzufragen kann genauso mit Indexes gearbeitet werden, wie wir es bereits gesehen haben. Der einzige Unterschied ist, dass ein Index nicht ausreicht, da dieser Index auf eine Liste verweist. Deshalb wird mindestens ein zweiter Index benötigt, um in der inneren Liste ein Element abzufragen.
Um beispielsweise das Element 5 zu erhalten benötigen wir aus der zweiten Liste das zweite Element, somit benötigen wir zweimal den Index 1, den wir mit eckigen Klammern abfragen können.
Um alle Elemente einer verschachtelten Python List zu durchlaufen benötigen wir auch mehrere, verschachtelte Schleifen. Um jedes Element von nested_list
ausgegeben zu können werden zwei for-Schleifen benötigt, die erste iteriert durch alle Unterlisten, während die zweite durch alle Elemente in der Unterliste iteriert und diese dann ausgibt.
Ändern von Verschachtelten Listen
Analog zu normalen Python Lists können einzelne Elemente in einer verschachtelten Liste auch unter Angabe des Indexes überschrieben werden. Dazu werden jedoch wieder zwei Indexes benötigt, um auf ein Element zuzugreifen und nicht eine komplette Unterliste zu überschreiben.
Das dritte Element in der zweiten Unterliste kann mit folgendem Befehl überschrieben werden:
Eine weitere Unterliste, bzw. eine weitere Zeile der Matrix, kann mit dem .append()
Statement hinzugefügt werden.
Die zweite Unterliste kann mit dem folgenden Befehl entfernt werden:
List Comprehensions mit Verschachtelten Listen
List Comprehensions werden allgemein verwendet, um Operationen auf jedem Element einer Python List durchzuführen. Dies kann natürlich auch mit verschachtelten Listen durchgeführt werden mit dem Unterschied, dass es auch wiederum verschachtelte Schleifen benötigt.
Um jedes Element in der verschachtelten Liste zu quadrieren kann der folgende Befehl genutzt werden:
Praktisches Beispiel: Matrix-Transposition
Bei der Matrix-Transposition werden die Zeilen der Matrix zu den Spalten der transponierten Matrix und die Spalten der Ausgangsmatrix werden zu den Zeilen der transponierten Matrix. In Python lässt sich dies mithilfe von verschachtelten Listen und einer List Comprehension umsetzen:
Diese Funktion nimmt eine verschachtelte Liste als Input und gibt eine transponierte Matrix als Output zurück.
Das Arbeiten mit verschachtelten Python Listen ist unverzichtbar, um strukturierte und mehrdimensionale Daten in Python handhaben zu können. Diese kann beispielsweise auch bei der Arbeit mit Datensätzen im Bereich Machine Learning von entscheidender Bedeutung sein, da sie hilft Datenmanipulation vorzunehmen und die Daten effizient zu analysieren.
Was unterscheidet eine Pandas Series von einer Python List?
An diesem Punkt des Beitrags könnte man den Eindruck gewonnen haben, dass die Pandas Series und die Python List zwei sehr ähnliche Datenstrukturen sind, deren Hauptunterschied ist, dass die Liste lediglich numerische Indizes verwenden kann, während die Pandas Series auch textuelle Indizes zulässt.
Die Hauptunterscheidung zwischen der Series under Liste besteht nicht in dessen Funktionalitäten oder Aufbau, sondern in den Anwendungsmöglichkeiten. Die Series wird im Bereich der Data Science vor allem als Vorstufe für tabellarische Daten genutzt, die wiederum in Diagrammen veranschaulicht werden sollen. Das heißt die Series ist konkret einsehbar.
Die Liste hingegen wird zur Zwischenspeicherung von komplexen Datenstrukturen genutzt, hält sich also eher im Hintergrund und dient als Hilfsmittel für komplexe Berechnungen. Die Hauptunterschiede bestehen vor allem darin:
- Homogenität: Eine Pandas-Reihe erfordert, dass alle Datenelemente vom gleichen Datentyp sind, während eine Python-Liste Elemente unterschiedlicher Datentypen enthalten kann.
- Speichereffizienz: Pandas-Serien sind speichereffizienter als Python-Listen, da sie intern NumPy-Arrays verwenden, die kompakter und schneller für numerische Berechnungen sind.
- Vektorisierung: Die Pandas-Reihe unterstützt vektorisierte Operationen, die es uns ermöglichen, Berechnungen auf ganzen Sequenzen von Daten auf einmal durchzuführen, wodurch die Datenverarbeitung schneller und effizienter wird. Python-Listen hingegen unterstützen keine vektorisierten Operationen.
Welche Python Sammlungen gibt es?
In Python gibt es insgesamt vier Datentypen, die standardmäßig hinterlegt sind:
- Die Liste ist eine geordnete Sammlung von Elementen, die änderbar ist und auch doppelte Elemente enthalten kann.
- Das Tuple ist im Endeffekt eine Liste, mit dem Unterschied, dass es nicht mehr änderbar ist. Es können also keine Elemente mehr nachträglich hinzugefügt oder entfernt werden.
- Das Set lässt keine doppelten Einträge zu. Gleichzeitig ist die Anordnung der Elemente innerhalb des Sets variabel. Das Set an sich kann verändert werden, aber die einzelnen Elemente können nicht nachträglich geändert werden.
- Ein Dictionary ist seit der Python Version 3.7 eine geordnete Sammlung von Schlüssel-Wert Paaren, die änderbar ist. In den früheren Versionen ist das Dictionary ungeordnet.
Das solltest Du mitnehmen
- Python Lists können genutzt werden, um eine Sammlung von Elementen in einer Python Variablen zu speichern.
- Die Liste ist geordnet und kann mithilfe von Befehlen geändert werden.
Vielen Dank an Deepnote für das Sponsoring dieses Artikels! Deepnote bietet mir die Möglichkeit, Python-Code einfach und schnell auf dieser Website einzubetten und auch die zugehörigen Notebooks in der Cloud zu hosten.
Was ist XOR?
Entdecken Sie XOR: Die Rolle des Exklusiv-Oder-Operators in Logik, Verschlüsselung, Mathematik, KI und Technologie.
Wie kannst Du die Ausnahmebehandlung in Python umsetzen?
Die Kunst der Ausnahmebehandlung in Python: Best Practices, Tipps und die wichtigsten Unterschiede zwischen Python 2 und Python 3.
Was sind Python Module?
Erforschen Sie Python Module: Verstehen Sie ihre Rolle, verbessern Sie die Funktionalität und rationalisieren Sie die Programmierung.
Was sind Python Vergleichsoperatoren?
Beherrschen Sie die Python Vergleichsoperatoren für präzise Logik und Entscheidungsfindung beim Programmieren in Python.
Was sind Python Inputs und Outputs?
Python Inputs und Outputs beherrschen: Erforschen Sie Eingaben, Ausgaben und den Umgang mit Dateien in der Python-Programmierung.
Wie kannst Du mit Python Excel / CSV Dateien bearbeiten?
In diesem Artikel werden Möglichkeiten aufgezeigt, um mit Python Excel- und CSV-Dateien öffnen, bearbeiten und schreiben zu können.
Andere Beiträge zum Thema Python Lists
- w3schools bietet ausführliche Beispiele zu Python Lists mit der Möglichkeit auch online Codeschnipsel direkt ausführen zu können.
Niklas Lang
Seit 2020 bin ich als Machine Learning Engineer und Softwareentwickler tätig und beschäftige mich leidenschaftlich mit der Welt der Daten, Algorithmen und Softwareentwicklung. Neben meiner Arbeit in der Praxis unterrichte ich an mehreren deutschen Hochschulen, darunter die IU International University of Applied Sciences und die Duale Hochschule Baden-Württemberg, in den Bereichen Data Science, Mathematik und Business Analytics.
Mein Ziel ist es, komplexe Themen wie Statistik und maschinelles Lernen so aufzubereiten, dass sie nicht nur verständlich, sondern auch spannend und greifbar werden. Dabei kombiniere ich praktische Erfahrungen aus der Industrie mit fundierten theoretischen Grundlagen, um meine Studierenden bestmöglich auf die Herausforderungen der Datenwelt vorzubereiten.